java8以前要对map排序比较繁琐复杂,使用java8的lambda表达式排序要简单很多,直接上代码
public static void main(String[] args) {
// 初始数据
Map<String, Integer> smap = new HashMap<>();
smap.put("1", 11);
smap.put("3", 33);
smap.put("2", 22);
// 1.8以前
List<Map.Entry<String, Integer>> list1 = new ArrayList<>();
list1.addAll(smap.entrySet());
Collections.sort(list1, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue() - o2.getValue();
}
});
for (Entry<String, Integer> entry : list1) {
System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
}
// 1.8使用lambda表达式
List<Map.Entry<String, Integer>> list2 = new ArrayList<>();
list2.addAll(smap.entrySet());
Collections.sort(list2, (o1, o2) -> o1.getValue()-o2.getValue());
list2.forEach(entry -> {
System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
});
}