zoukankan      html  css  js  c++  java
  • 如何高效的遍历HashMap 以及对key 进行排序

     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实现
  • 相关阅读:
    几款开源的图形界面库(GUI Libraries)
    CMenu菜单
    开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山
    基于MFC的ActiveX控件开发
    VC++中动态生成菜单技巧
    ActiveX控件打包成Cab置于网页中自动下载安装
    VC++API小查
    全面解析MFC应用程序中处理消息的顺序
    CMenu类的使用方法
    跨域单点登录实现(使用iframe)_勇敢的心_百度空间
  • 原文地址:https://www.cnblogs.com/wanglichaoya/p/10217307.html
Copyright © 2011-2022 走看看