teiba

导航

实现对HashMap的value排序

问题:
如何对HashMap中的value值进行排序

关键点:
1.取HashMap的Map.Entry,放入List
2.利用Collections.sort(List, Comparator<? extents T>)对Map.Entry中的value进行排序
3.实现内部类Comparator,实现String的compare方法

代码:

 1 import java.util.*;
 2 
 3 public class HashMapTest {
 4 
 5     public static void main(String[] args){
 6         HashMap<String, String> map = new HashMap<>();
 7         map.put("one", "good");
 8         map.put("two", "bad");
 9         map.put("three", "happy");
10         map.put("fourth", "sad");
11 
12         List<Map.Entry<String, String>> listEntry = new ArrayList<>();
13         listEntry.addAll(map.entrySet());
14         Collections.sort(listEntry, new Comparator<Map.Entry<String, String>>() {
15             @Override
16             public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
17 
18                 // String的compareTo方法,返回负数,说明o1在o2的字典顺序之前。
19                 return o1.getValue().compareTo(o2.getValue());
20             }
21         });
22 
23         for(Map.Entry<String, String> entry : listEntry){
24             System.out.println(entry.getKey() + "  " + entry.getValue());
25         }
26     }
27 }

运行结果:

结果按照英文字母表的顺序排序。

posted on 2019-03-29 12:28  teiba  阅读(642)  评论(0编辑  收藏  举报