I have a map in this format: Map<String, Map<Integer, Long>>
and content like
{BCD={321=2}, ABC={123=1}, DEF={798=3}, CDE={564=1, 456=1}, GHI={908=2}}`
Is it possible sort the Long value reverse, then String and Integer?
I have a map in this format: Map<String, Map<Integer, Long>>
and content like
{BCD={321=2}, ABC={123=1}, DEF={798=3}, CDE={564=1, 456=1}, GHI={908=2}}`
Is it possible sort the Long value reverse, then String and Integer?
No.
You cannot sort contents of a Map.
Sorting is only possible on things, which retain a sorting, like List, TreeMap or TreeSet.
If you want the Map contents to be sorted, just implement a Comparator (e.g. Comparator<Map.Entry<String, Map<Integer, Long>>>) which is capable of returning an integer representing the order of two entries and feed all contents of your Map into a List<Map.Entry<String, Map<Integer, Long>>>, which can then be sorted.
private static final Comparator<Map.Entry<String, Map<Integer, Long>>> COMPI = new Comparator<>() {
@Override
public int compare(Map.Entry<String, Map<Integer, Long>> obj1,
Map.Entry<String, Map<Integer, Long>>(obj2)) {
... return 0, if obj1 equal to obj2
... return 1, if obj1 lower than obj2
... return -1, if obj1 greater than obj2
}
public static List<Map.Entry<String, Map<Integer, Long>>> sortMyMap(Map<String, Map<Integer, Long>> myMap) {
List<Map.Entry<String, Map<Integer, Long>>> l = new java.util.ArrayList<>(myMap.entrySet());
Collections.sort(l, COMPI);
return l;
}
}
The most difficult part would be to implement the comparator correctly...