Map
是键值对的集合。
所以从逻辑上讲,我们可以通过两种方式对Map进行排序:按键排序或者按值排序。
on It Road.com
Java 按值对Map进行排序
在 Java 8 中,Map.Entry
类具有 static
方法 compareByValue() 来帮助我们按值对 Map
进行排序。
comparingByValue()
方法返回一个 Comparator,该 Comparator 以自然顺序对值进行比较。
HashMap<Integer, String> unSortedMap = new HashMap<>(); unSortedMap.put(50, "Alex"); unSortedMap.put(20, "Charles"); unSortedMap.put(60, "Brian"); unSortedMap.put(70, "Edwin"); unSortedMap.put(120, "George"); unSortedMap.put(10, "David"); // LinkedHashMap保留插入元素的顺序 LinkedHashMap<Integer, String> sortedMap = new LinkedHashMap<>(); unSortedMap.entrySet() .stream() .sorted(Map.Entry.comparingByValue()) .forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue())); System.out.println(sortedMap);
程序输出。
{50=Alex, 60=Brian, 20=Charles, 10=David, 70=Edwin, 120=George}
Java 按Key 对Map进行排序
按键对Map进行排序的最佳和最有效的方法是将所有Map条目添加到 TreeMap 对象中。TreeMap
总是按排序顺序存储键。
HashMap<Integer, String> map = new HashMap<>(); map.put(50, "Alex"); map.put(20, "Charles"); map.put(60, "Brian"); map.put(70, "Edwin"); map.put(120, "George"); map.put(10, "David"); TreeMap<Integer, String> treeMap = new TreeMap<>(map); System.out.println(treeMap);
程序输出:
{10=David, 20=Charles, 50=Alex, 60=Brian, 70=Edwin, 120=George}
日期:2020-09-17 00:09:36 来源:oir作者:oir