Map排序

 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