zoukankan      html  css  js  c++  java
  • keyset与entryset

    1、基本概述

    Set<Map.Entry<K,V>> entrySet()  返回此映射中包括的映射关系的 set 视图。

    Set<K>              keySet()      返回此映射中包括的键的 set 视图。

    2、效率分析

    对于keySet事实上是遍历了2次,一次是转为iterator。一次就从hashmap中取出key所对于的value。

    而entryset仅仅是遍历了第一次,他把key和value都放到了entry中,所以就快了。

    3、使用举例

    Map<String, String> maps = new HashMap<String, String>();  
      //方法一: 用entrySet()  
      Iterator<Entry<String,String>> it = maps.entrySet().iterator();  
      while(it.hasNext()){  
       Map.Entry<String,String> m = it.next();  
       String key = m.getKey();
       String value= m.getValue();
      }  
      // 方法二:jdk1.5支持,用entrySet()和For-Each循环()  
      for (Map.Entry<String, String> m : maps.entrySet()) {  
       String key = m.getKey();
       String value= m.getValue();   
      }  
      // 方法三:用keySet()  
      Iterator<String> it2 = maps.keySet().iterator();  
      while (it2.hasNext()){  
       String key = it2.next();
       String value= maps.get(key);
      }  
      // 方法四:jdk1.5支持。用keySet()和For-Each循环  
      for(String m: maps.keySet()){  
       String key = m;
       String value= maps.get(m);
      }

    foreach和while的效率差点儿是差点儿相同的,而for则相对较慢一些。

    foreach它可以替代出for权?显然不是。
    foreach内部原则上或实际上 Iterator。但它不能像Iterator同样可以人为地控制,并且也不能称为iterator.remove(),但是你不能使用索引,以方便存取元件。

    因此foreach这个周期一般只适合于迭代,提取数据显示,不适合根据标准添加复杂的操作,例如删除和使用。

  • 相关阅读:
    设计模式之单例模式
    设计模式之组合模式
    SVN搭建简单教程
    添加Silverlight应用到HTML
    动态修改配置文件
    Ajax
    jQuery 事件方法
    Java和JavaScript对账户实现掩码并四个一组分隔
    一种简单实现当前时间是否在工作时间内的方法
    Postman接口自动化测试实例用到的完整的SM2前端加密算法代码
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4568019.html
Copyright © 2011-2022 走看看