博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keyset与entryset
阅读量:6967 次
发布时间:2019-06-27

本文共 1060 字,大约阅读时间需要 3 分钟。

1、基本概述

<<,>> ()  返回此映射中包括的映射关系的 set 视图。

<>              ()      返回此映射中包括的键的 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这个周期一般只适合于迭代,提取数据显示,不适合根据标准添加复杂的操作,例如删除和使用。

转载地址:http://vvfsl.baihongyu.com/

你可能感兴趣的文章
在Windows上编译UEFI SDK 2018/OVMF的方法
查看>>
listview 重复动画效果
查看>>
Java中Runnable和Thread的区别
查看>>
04 - Object-C协议与代理设计
查看>>
PHP实现页面跳转
查看>>
在Android中取得当前进程名
查看>>
go http的按序号发送,按序号接收
查看>>
UML类图几种关系的总结
查看>>
Android手机主流屏幕分辨率有哪些?
查看>>
初探swift语言的学习笔记四(类对象,函数)
查看>>
drum
查看>>
easyui列统计
查看>>
Linux下配置JavaWeb环境(持续更新其他软件)
查看>>
Java之数组array和集合list、set、map
查看>>
Java异常了解
查看>>
管理员修改文件的权限
查看>>
Java注释@interface的用法
查看>>
桥接模式(Bridge)
查看>>
系统架构师具备的能力和构架师自我培养过程
查看>>
发布几个常用Docker基础环境镜像
查看>>