问题:
如何对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 }
运行结果:
结果按照英文字母表的顺序排序。