1 package Test4;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Comparator;
6 import java.util.HashMap;
7 import java.util.List;
8 import java.util.Map;
9
10 public class Test {
11
12 public static void main(String[] args) {
13 Map<String, Integer> map = new HashMap<String, Integer>();
14 map.put("d", 2);
15 map.put("c", 1);
16 map.put("b", 1);
17 map.put("a", 3);
18
19 List<Map.Entry<String, Integer>> infoIds =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
21 //ArrayList(Collection<? extends E> c)是ArrayList的一个不常用的构造方法,
构造一个包含指定 collection 的元素的列表。
22
23 //排序前
24 for (int i = 0; i < infoIds.size(); i++) {
25 String key= infoIds.get(i).getKey();
26 int value= infoIds.get(i).getValue();
27 System.out.println(key+":"+value);
28 }
29 /*输出结果:
30 d:2
31 b:1
32 c:1
33 a:3 */
34
35 //排序
36 //重写compare方法
37 Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
38 public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
39 //return (o2.getValue() - o1.getValue()); //根据value排序
40 return (o1.getKey()).toString().compareTo(o2.getKey());//根据key排序
41 }
42 });
43
44 //排序后
45 for (int i = 0; i < infoIds.size(); i++) {
46 String key= infoIds.get(i).getKey();
47 int value= infoIds.get(i).getValue();
48 System.out.println(key+":"+value);
49 }
50 //根据key排序
51 //a:3
52 //b:1
53 //c:1
54 //d:2
55 //根据value排序
56 //a:3
57 //d:2
58 //b:1
59 //c:1
60 }
61 }