1 package com.jdk7.chapter4;
2
3 import java.util.Comparator;
4 import java.util.HashMap;
5 import java.util.Iterator;
6 import java.util.Map;
7 import java.util.TreeMap;
8
9 /**
10 * 继承Comparator的compare方法,简化比较细节
11 * Map的几种类型中只有TreeMap是会排序的,默认为升序
12 * 如果要对Map其他类型进行排序,需要将其他类型Map作为TreeMap构建的参数,从而达到按'键'升序排列
13 * 如果希望按照自定义规则排序,首先自定义规则函数所在类需要实现接口Comparator的compare方法,然后需要将自定义排序规则所在类对象作为TreeMap构建的参数
14 * @author Administrator
15 *
16 */
17 public class MapSortTest
implements Comparator {
18
19 /**
20 * 创建MapSortTest时会加载覆盖父类的compare方法,作为排序规则
21 */
22 @Override
23 public int compare(Object o1, Object o2) {
24 //将o1和o2转换为int类型
25 int num1 =
((Integer)o1).intValue();
26 int num2 =
((Integer)o2).intValue();
27 if(num1<
num2){
28 return 1
;
29 }
else if(num1>
num2){
30 return -1
;
31 }
32 return 0
;
33 }
34
35 public static void printMap(Map map){
36 Map.Entry entry =
null;
37 Iterator it =
map.entrySet().iterator();
38 while(it.hasNext()){
39 entry =
(Map.Entry)it.next();
40 System.out.println("key: "+entry.getKey()+" value: "+
entry.getValue());
41 }
42 System.out.println();
43 }
44
45 public static void main(String[] args) {
46 MapSortTest mt =
new MapSortTest();
47 Map mapm =
new HashMap();
48 mapm.put(001, "Hello"
);
49 mapm.put(004, "Lily"
);
50 mapm.put(003, "Rucy"
);
51 mapm.put(002, "Hanmei"
);
52 System.out.println("初始化后的Map>"
);
53 mt.printMap(mapm);
54 System.out.println("默认排序后的Map>"
);
55 Map mapt =
new TreeMap(mapm);
56 mt.printMap(mapt);
57 System.out.println("自定义排序后的Map>"
);
58 //构建TreeMap对象时,参数为排序函数compare
59 // mapt = new TreeMap(new MapSortTest());
60 mapt =
new TreeMap(mt);
61 mapt.putAll(mapm);
62 mt.printMap(mapt);
63 }
64 }
65
66 执行结果:
67 初始化后的Map>
68 key: 1
value: Hello
69 key: 2
value: Hanmei
70 key: 3
value: Rucy
71 key: 4
value: Lily
72
73 默认排序后的Map>
74 key: 1
value: Hello
75 key: 2
value: Hanmei
76 key: 3
value: Rucy
77 key: 4
value: Lily
78
79 自定义排序后的Map>
80 key: 4
value: Lily
81 key: 3
value: Rucy
82 key: 2
value: Hanmei
83 key: 1 value: Hello
转载于:https://www.cnblogs.com/celine/p/8459088.html