Java 8 – Map排序

您所在的位置:网站首页 关于hashmap Java 8 – Map排序

Java 8 – Map排序

2023-11-18 17:34| 来源: 网络整理| 查看: 265

前提

Map是Java中最常用的集合类之一,这里整理了关于HashMap的排序 (关于List的排序,请查看Collections.sort()的doc或源码)。

将无序的HashMap借助Stream整理成有序的LinkedHashMap。

 

 示例 1.根据key排序: 1 import java.util.HashMap; 2 import java.util.LinkedHashMap; 3 import java.util.Map; 4 5 public class SortByKeyExample { 6 7 public static void main(String[] argv) { 8 9 Map unsortMap = new HashMap(); 10 unsortMap.put("z", 10); 11 unsortMap.put("b", 5); 12 unsortMap.put("a", 6); 13 unsortMap.put("c", 20); 14 unsortMap.put("d", 1); 15 unsortMap.put("e", 7); 16 unsortMap.put("y", 8); 17 unsortMap.put("n", 99); 18 unsortMap.put("j", 50); 19 unsortMap.put("m", 2); 20 unsortMap.put("f", 9); 21 22 System.out.println("Original..."); 23 System.out.println(unsortMap); 24 25 Map result = new LinkedHashMap(); 26 27 //sort by key, a,b,c..., and put it into the "result" map 28 unsortMap.entrySet().stream() 29 .sorted(Map.Entry.comparingByKey()) 30 .forEachOrdered(x -> result.put(x.getKey(), x.getValue())); 31 32 System.out.println("Sorted..."); 33 System.out.println(result); 34 35 } 36 37 }

 结果:

  

 

2.根据value排序: 1 import java.util.HashMap; 2 import java.util.LinkedHashMap; 3 import java.util.Map; 4 5 public class SortByValueExample { 6 7 public static void main(String[] argv) { 8 9 Map unsortMap = new HashMap(); 10 unsortMap.put("z", 10); 11 unsortMap.put("b", 5); 12 unsortMap.put("a", 6); 13 unsortMap.put("c", 20); 14 unsortMap.put("d", 1); 15 unsortMap.put("e", 7); 16 unsortMap.put("y", 8); 17 unsortMap.put("n", 99); 18 unsortMap.put("j", 50); 19 unsortMap.put("m", 2); 20 unsortMap.put("f", 9); 21 22 System.out.println("Original..."); 23 System.out.println(unsortMap); 24 25 Map result = new LinkedHashMap(); 26 27 //sort by value, and reserve, 10,9,8,7,6... 28 unsortMap.entrySet().stream() 29 .sorted(Map.Entry.comparingByValue().reversed()) // reversed倒序,不指定类型,会默认为 30 .forEachOrdered(x -> result.put(x.getKey(), x.getValue())); 31 32 System.out.println("Sorted..."); 33 System.out.println(result); 34 35 } 36 37 }

 结果:

  

补充一张Map的类图:

LinkedHashMap 是 Map 接口的哈希表和链接列表实现。

LinkedHashMap 实现与 HashMap 的不同之处在于,LinkedHashMap 维护着一个运行于所有条目的双重链接列表,此链接列表定义了迭代顺序。

 

 参考: https://www.mkyong.com/java8/java-8-how-to-sort-a-map/ https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3