public static Map sortMap(Map map) {
TreeMap> treeMap = new TreeMap<>();
map.entrySet().forEach(entry -> {
List indexList = treeMap.computeIfAbsent(entry.getValue(), k -> new ArrayList<>());
indexList.add(entry.getKey());
});
Map result = new ListOrderedMap();
treeMap.entrySet().forEach(entry -> {
entry.getValue().forEach(key -> result.put(key, map.get(key)));
});
return result;
}
public static Map sortMap2(Map map) {
Map result = new ListOrderedMap();
map.entrySet().stream().
sorted(Map.Entry.comparingByValue()).
forEachOrdered(entry -> result.put(entry.getKey(), entry.getValue()));
return result;
}