Added ordering of results by name as well as keywords
This commit is contained in:
parent
7ce8b83d16
commit
b639e36961
|
@ -1,6 +1,7 @@
|
||||||
package data;
|
package data;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -56,4 +57,13 @@ public interface MultipleHMKeys {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean equals(Object obj);
|
boolean equals(Object obj);
|
||||||
|
|
||||||
|
default int compareTo(MultipleHMKeys othr){
|
||||||
|
return Comparator.comparing(MultipleHMKeys::getK1)
|
||||||
|
.thenComparing(MultipleHMKeys::getK2)
|
||||||
|
.thenComparing(MultipleHMKeys::getK3)
|
||||||
|
.thenComparing(MultipleHMKeys::getK4)
|
||||||
|
.thenComparing(MultipleHMKeys::getK5)
|
||||||
|
.compare(this, othr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,24 @@ public class Util {
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ValueThenKeyComparator<K extends Comparable<? super K>,
|
||||||
|
V extends Comparable<? super V>>
|
||||||
|
implements Comparator<Map.Entry<K, V>> {
|
||||||
|
|
||||||
|
public int compare(Map.Entry<K, V> a, Map.Entry<K, V> b) {
|
||||||
|
int cmp1 = a.getValue().compareTo(b.getValue());
|
||||||
|
if (cmp1 != 0) {
|
||||||
|
return cmp1;
|
||||||
|
} else {
|
||||||
|
return a.getKey().compareTo(b.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sorts a map in a descending order by value.
|
* Sorts a map in a descending order by value.
|
||||||
*/
|
*/
|
||||||
|
@ -122,12 +140,17 @@ public class Util {
|
||||||
limit = map.size();
|
limit = map.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<K, V> result = new LinkedHashMap<>();
|
|
||||||
TimeWatch watch = TimeWatch.start();
|
TimeWatch watch = TimeWatch.start();
|
||||||
|
|
||||||
Stream<Map.Entry<K, V>> st = map.entrySet().stream();
|
// sort by alphabet
|
||||||
|
Map<K, V> alphaSorted = new LinkedHashMap<>();
|
||||||
|
map.entrySet().stream().sorted((a, b) -> ((MultipleHMKeys)a.getKey()).compareTo((MultipleHMKeys)b.getKey())).limit(limit)
|
||||||
|
.forEachOrdered(e -> alphaSorted.put(e.getKey(), e.getValue()));
|
||||||
|
|
||||||
st.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).limit(limit)
|
|
||||||
|
|
||||||
|
Map<K, V> result = new LinkedHashMap<>();
|
||||||
|
alphaSorted.entrySet().stream().sorted((a, b) -> (int) ((Long) b.getValue() - (Long) a.getValue())).limit(limit)
|
||||||
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
|
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
|
||||||
|
|
||||||
if (Settings.PRINT_LOG) {
|
if (Settings.PRINT_LOG) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user