设为首页 加入收藏

TOP

java集合类源码分析之Map(二)(二)
2017-10-11 15:19:51 】 浏览:10098
Tags:java 集合 源码 分析 Map
", 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 
  • 按value排序

有了上面的例子,我们知道也可以通过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()+":"+
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于Java里面File类创建txt文件重.. 下一篇java中equals与==的用法比较

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目