", 400);
30 for(String key: treeMap.keySet()){
31 System.out.print(key+":"+treeMap.get(key)+", ");
32 } //F:120, E:400, D:105, C:300, B:100, A:200,
2.HashMap的按key排序
1 //用HashMap子集初始化TreeMap对象,调用默认比较器(升序)
2 //注意:TreeMap初始化的参数为Map接口的实现类subMap
3 Map<String, Integer> subMap = new HashMap<String, Integer>();
4 subMap.put("B", 100);
5 subMap.put("A", 120);
6 subMap.put("C", 105);
7 subMap.put("D", 200);
8 for(String key: subMap.keySet()){
9 System.out.print(key+":"+subMap.get(key)+", ");
10 } //D:200, A:120, B:100, C:105,
11
12 System.out.println();
13
14 Map<String, Integer> treeMap = new TreeMap<String, Integer>(subMap);
15 for(String key: treeMap.keySet()){
16 System.out.print(key+":"+treeMap.get(key)+", ");
17 } //A:120, B:100, C:105, D:200,
1 Map<String, Integer> hashMap = new HashMap<String, Integer>();
2
3 //hashMap默认按key的哈希值排列,是一种无序存储
4 hashMap.put("A", 100);
5 hashMap.put("B", 120);
6 hashMap.put("C", 105);
7 hashMap.put("D", 100);
8 for(String key: hashMap.keySet()){
9 System.out.print(key+":"+hashMap.get(key)+" ");
10 }//D:100 A:100 B:120 C:105
11
12 System.out.println();
13 //将HashMap对象存储到List集合中
14 ArrayList<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(hashMap.entrySet());
15 //调用Collections的sort方法,并且重写比较器
16 Collections.sort(mapList, new Comparator<Entry<String, Integer>>() {
17
18 @Override
19 public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
20 // TODO Auto-generated method stub
21 return o1.getKey().compareTo(o2.getKey());//升序,按value排序只需将getKey换成getValue即可
22 // return o2.getKey().compareTo(o1.getKey());//降序,按value排序只需将getKey换成getValue即可
23 }
24 } );
25
26 for (int i = 0; i < mapList.size(); i++) {
27 System.out.print(mapList.get(i).getKey()+":"+mapList.get(i).getValue()+" ");
28 }//A:100 B:120 C:105 D:100
有了上面的例子,我们知道也可以通过Collections的sort方法来进行Map集合的value排序,包括HashMap和TreeMap。
1 Map<String, Integer> hashMap = new HashMap<String, Integer>();
2
3 hashMap.put("A", 100);
4 hashMap.put("B", 120);
5 hashMap.put("C", 105);
6 hashMap.put("D", 110);
7 for(String key: hashMap.keySet()){
8 System.out.print(key+":"+hashMap.get(key)+" ");
9 }//D:110 A:100 B:120 C:105
10
11 System.out.println();
12 //将HashMap对象存储到List集合中
13 ArrayList<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(hashMap.entrySet());
14 //调用Collections的sort方法,并且重写比较器
15 Collections.sort(mapList, new Comparator<Entry<String, Integer>>() {
16
17 @Override
18 public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
19 // TODO Auto-generated method stub
20 return o1.getValue().compareTo(o2.getValue());//升序
21 // return o2.getValue().compareTo(o1.getValue());//降序
22 }
23 } );
24
25 for (int i = 0; i < mapList.size(); i++) {
26 System.out.print(mapList.get(i).getKey()+":"+