Skip to content

Commit 84b5cdb

Browse files
committed
fixing sort() methods so they are actually, you know, accurate... also ironing out Table bits
1 parent 727bda8 commit 84b5cdb

7 files changed

Lines changed: 217 additions & 67 deletions

File tree

core/src/processing/data/FloatDict.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ public FloatDict(BufferedReader reader) {
6363
}
6464

6565

66+
public FloatDict(String[] keys, float[] values) {
67+
if (keys.length != values.length) {
68+
throw new IllegalArgumentException("key and value arrays must be the same length");
69+
}
70+
this.keys = keys;
71+
this.values = values;
72+
count = keys.length;
73+
}
74+
75+
6676
public int size() {
6777
return count;
6878
}
@@ -485,7 +495,7 @@ public float compare(int a, int b) {
485495
diff = keys[a].compareToIgnoreCase(keys[b]);
486496
}
487497
}
488-
return reverse ? diff : -diff;
498+
return reverse ? -diff : diff;
489499
}
490500

491501
@Override
@@ -532,7 +542,7 @@ public void write(PrintWriter writer) {
532542
@Override
533543
public String toString() {
534544
StringBuilder sb = new StringBuilder();
535-
sb.append(getClass().getName() + " size= " + size() + " { ");
545+
sb.append(getClass().getSimpleName() + " size=" + size() + " { ");
536546
for (int i = 0; i < size(); i++) {
537547
if (i != 0) {
538548
sb.append(", ");

core/src/processing/data/FloatList.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -467,14 +467,14 @@ public int size() {
467467

468468
@Override
469469
public float compare(int a, int b) {
470-
return data[a] - data[b];
470+
return data[b] - data[a];
471471
}
472472

473473
@Override
474474
public void swap(int a, int b) {
475-
int temp = a;
476-
a = b;
477-
b = temp;
475+
float temp = data[a];
476+
data[a] = data[b];
477+
data[b] = temp;
478478
}
479479
}.run();
480480
}
@@ -605,4 +605,19 @@ public int[] array(int[] array) {
605605
System.arraycopy(data, 0, array, 0, count);
606606
return array;
607607
}
608+
609+
610+
@Override
611+
public String toString() {
612+
StringBuilder sb = new StringBuilder();
613+
sb.append(getClass().getSimpleName() + " size=" + size() + " [ ");
614+
for (int i = 0; i < size(); i++) {
615+
if (i != 0) {
616+
sb.append(", ");
617+
}
618+
sb.append(i + ": " + data[i]);
619+
}
620+
sb.append(" ]");
621+
return sb.toString();
622+
}
608623
}

core/src/processing/data/IntDict.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,16 @@ public IntDict(BufferedReader reader) {
8686
}
8787

8888

89+
public IntDict(String[] keys, int[] values) {
90+
if (keys.length != values.length) {
91+
throw new IllegalArgumentException("key and value arrays must be the same length");
92+
}
93+
this.keys = keys;
94+
this.values = values;
95+
count = keys.length;
96+
}
97+
98+
8999
public int size() {
90100
return count;
91101
}
@@ -375,7 +385,7 @@ public float compare(int a, int b) {
375385
diff = keys[a].compareToIgnoreCase(keys[b]);
376386
}
377387
}
378-
return reverse ? diff : -diff;
388+
return reverse ? -diff : diff;
379389
}
380390

381391
@Override
@@ -414,7 +424,7 @@ public void write(PrintWriter writer) {
414424
@Override
415425
public String toString() {
416426
StringBuilder sb = new StringBuilder();
417-
sb.append(getClass().getName() + " size= " + size() + " { ");
427+
sb.append(getClass().getSimpleName() + " size=" + size() + " { ");
418428
for (int i = 0; i < size(); i++) {
419429
if (i != 0) {
420430
sb.append(", ");

core/src/processing/data/IntList.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -379,14 +379,14 @@ public int size() {
379379

380380
@Override
381381
public float compare(int a, int b) {
382-
return data[a] - data[b];
382+
return data[b] - data[a];
383383
}
384384

385385
@Override
386386
public void swap(int a, int b) {
387-
int temp = a;
388-
a = b;
389-
b = temp;
387+
int temp = data[a];
388+
data[a] = data[b];
389+
data[b] = temp;
390390
}
391391
}.run();
392392
}
@@ -556,4 +556,19 @@ public int[] array(int[] array) {
556556
// }
557557
// return outgoing;
558558
// }
559+
560+
561+
@Override
562+
public String toString() {
563+
StringBuilder sb = new StringBuilder();
564+
sb.append(getClass().getSimpleName() + " size=" + size() + " [ ");
565+
for (int i = 0; i < size(); i++) {
566+
if (i != 0) {
567+
sb.append(", ");
568+
}
569+
sb.append(i + ": " + data[i]);
570+
}
571+
sb.append(" ]");
572+
return sb.toString();
573+
}
559574
}

core/src/processing/data/StringDict.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,16 @@ public StringDict(BufferedReader reader) {
6161
}
6262

6363

64+
public StringDict(String[] keys, String[] values) {
65+
if (keys.length != values.length) {
66+
throw new IllegalArgumentException("key and value arrays must be the same length");
67+
}
68+
this.keys = keys;
69+
this.values = values;
70+
count = keys.length;
71+
}
72+
73+
6474
public int size() {
6575
return count;
6676
}
@@ -312,7 +322,7 @@ public float compare(int a, int b) {
312322
diff = keys[a].compareToIgnoreCase(keys[b]);
313323
}
314324
}
315-
return reverse ? diff : -diff;
325+
return reverse ? -diff : diff;
316326
}
317327

318328
@Override
@@ -351,12 +361,12 @@ public void write(PrintWriter writer) {
351361
@Override
352362
public String toString() {
353363
StringBuilder sb = new StringBuilder();
354-
sb.append(getClass().getName() + " size= " + size() + " { ");
364+
sb.append(getClass().getSimpleName() + " size=" + size() + " { ");
355365
for (int i = 0; i < size(); i++) {
356366
if (i != 0) {
357367
sb.append(", ");
358368
}
359-
sb.append("\"" + keys[i] + "\": " + values[i]);
369+
sb.append("\"" + keys[i] + "\": \"" + values[i] + "\"");
360370
}
361371
sb.append(" }");
362372
return sb.toString();

core/src/processing/data/StringList.java

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -464,9 +464,9 @@ public float compare(int a, int b) {
464464

465465
@Override
466466
public void swap(int a, int b) {
467-
int temp = a;
468-
a = b;
469-
b = temp;
467+
String temp = data[a];
468+
data[a] = data[b];
469+
data[b] = temp;
470470
}
471471
}.run();
472472
}
@@ -599,11 +599,9 @@ public String[] array(String[] array) {
599599
}
600600

601601

602-
/** Remove all non-unique entries. */
603-
public void unique() {
604-
IntDict cheat = getTally();
605-
data = cheat.keyArray();
606-
count = cheat.size();
602+
/** Get a list of all unique entries. */
603+
public String[] getUnique() {
604+
return getTally().keyArray();
607605
}
608606

609607

@@ -625,4 +623,27 @@ public IntDict getOrder() {
625623
}
626624
return outgoing;
627625
}
626+
627+
628+
// public void println() {
629+
// for (int i = 0; i < count; i++) {
630+
// System.out.println("[" + i + "] " + data[i]);
631+
// }
632+
// System.out.flush();
633+
// }
634+
635+
636+
@Override
637+
public String toString() {
638+
StringBuilder sb = new StringBuilder();
639+
sb.append(getClass().getSimpleName() + " size=" + size() + " [ ");
640+
for (int i = 0; i < size(); i++) {
641+
if (i != 0) {
642+
sb.append(", ");
643+
}
644+
sb.append(i + ": \"" + data[i] + "\"");
645+
}
646+
sb.append(" ]");
647+
return sb.toString();
648+
}
628649
}

0 commit comments

Comments
 (0)