Java Map中的将和值进行排序的方法
由于HashMap是无序的所以此处必须使用LinkedHashMap进行接收
1、通过键值进行排序
// 假设是将hashmap中的值进行排序
Map<Integer,String> map = new HashMap<>();
map.put(3,"aa");
map.put(1,"bb");
map.put(2,"cc");
map.put(9,"dd");
// 创建LinkedHashMap进行接受
Map<Integer,String> orderMap = new LinkedHashMap<>();
// 使用stream流进行排序
map.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(entry->{orderMap.put(entry.getKey(), entry.getValue());});
for (Map.Entry<Integer, String> entry : orderMap.entrySet()) {
System.out.println(entry);
}
执行结果:
2、通过Value进行排序
主要就是修改Stream流的sorted方法中的参数 注:只修改了sorted方法即可对Value进行排序
// 假设是将hashmap中的值进行排序
Map<String,Integer> map = new HashMap<>();
map.put("aa",33);
map.put("bb",11);
map.put("cc",99);
map.put("dd",88);
// 创建LinkedHashMap进行接受
Map<String,Integer> orderMap = new LinkedHashMap<>();
// 使用stream流进行排序(stream流的方法)
map.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEachOrdered(entry->{orderMap.put(entry.getKey(), entry.getValue());});
for (Map.Entry<String,Integer> entry : orderMap.entrySet()) {
System.out.println(entry);
}
执行结果:
排序主要功能代码总结
将HashMap中的添加到LinkedHashMap中
注:LinkedHashMap是有序的(添加顺序)
map.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEachOrdered(entry->{orderMap.put(entry.getKey(), entry.getValue());});