Java / Map and its implementations
How do you sort a TreeMap by comparing its value?
You can't have the TreeMap itself sort on the values, since that defies the SortedMap specification, "A Map that further provides a total ordering on its keys". However, using an external collection, you can always sort Map.entrySet() either by key, values, or other sorting as needed.
package net.javapedia.algorithms; import java.util.*; import java.util.stream.Collectors; public class SortMapByValueForlowestToHighest { public static void main(String[] args) { usingLinkedHashMap(); } public static void usingLinkedHashMap() { Map<String, Integer> monthToExpense = new HashMap<>(); monthToExpense.put("Jan",3); monthToExpense.put("Feb",5); monthToExpense.put("Mar",1); monthToExpense.put("Apr",0); monthToExpense.put("May",11); System.out.println(monthToExpense); monthToExpense= monthToExpense.entrySet().stream().sorted(Map.Entry.comparingByValue()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1,e2)->e1, LinkedHashMap::new)); System.out.println(monthToExpense); } }
More Related questions...