如何高效的遍历HashMap 以及对key 进行排序

时间:2022-08-28 19:16:01
 Map<Integer ,Object> map = new HashMap<Integer,Object>();
           for(int i = 0; i<=100;i++){
               map.put(i,i);
           }
 Iterator<Entry<Integer, Object>> iterator = map.entrySet().iterator();
          while(iterator.hasNext()){
              Map.Entry<Integer ,Object> entry = (Entry<Integer ,Object>)iterator.next();
              Object key = entry.getKey();
              Object value = entry.getValue();
              
              }
第一种: 
Map map = new HashMap(); 
Iterator iter = map.entrySet().iterator(); 
while (iter.hasNext()) { 
    Map.Entry entry = (Map.Entry) iter.next(); 
    Object key = entry.getKey(); 
    Object val = entry.getValue(); 

效率高,以后一定要使用此种方式! 
第二种: 
Map map = new HashMap(); 
Iterator iter = map.keySet().iterator(); 
while (iter.hasNext()) { 
    Object key = iter.next(); 
    Object val = map.get(key); 

效率低,以后尽量少使用! 

 

关于hashmap 按value排序

 

  最近开发中用到了HashMap ,而且想到要利用其value的大小排序。。真是个伤脑筋的问题。
还好,经过查阅各个地方的资料。发现这个下边的代码处理是最简单有效的。代码很少,却达到目的了。
一般我坚持的一个原则的是:能简单处理的,尽量不做复杂工作。
关键代码部分如下:
HashMap map_Data=new HashMap();
    map_Data.put("A", "98");
    map_Data.put("B", "50");
    map_Data.put("C", "50");
    map_Data.put("D", "25");
    map_Data.put("E", "85");
    System.out.println(map_Data);
    List<Map.Entry<String, String>> list_Data = new ArrayList<Map.Entry<String, String>>(map_Data.entrySet());
    Collections.sort(list_Data, new Comparator<Map.Entry<String, String>>()
      {  
          public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2)
          {
           if(o2.getValue()!=null&&o1.getValue()!=null&&o2.getValue().compareTo(o1.getValue())>0){
            return 1;
           }else{
            return -1;
           }
             
          }
      });
    System.out.println(list_Data);
主要的一个知识点在这个Collections.sort(list,Comparator接口实现)地方,而最最重要核心部分是这个Comparator实现