I have a Map that has strings for both keys and values.
Data is like following:
\"question1\", \"1\"
\"question9\", \"1\"
\"que
This code can sort a key-value map in both orders i.e. ascending and descending.
> Map sortByValues
(final Map map, int ascending)
{
Comparator valueComparator = new Comparator() {
private int ascending;
public int compare(K k1, K k2) {
int compare = map.get(k2).compareTo(map.get(k1));
if (compare == 0) return 1;
else return ascending*compare;
}
public Comparator setParam(int ascending)
{
this.ascending = ascending;
return this;
}
}.setParam(ascending);
Map sortedByValues = new TreeMap(valueComparator);
sortedByValues.putAll(map);
return sortedByValues;
}
As an example:
Map recommWarrVals = new HashMap();
recommWarrVals = sortByValues(recommWarrVals, 1); // Ascending order
recommWarrVals = sortByValues(recommWarrVals,-1); // Descending order