hashMap的2中遍历方式比较
来源:互联网 发布:网络传销一般崩盘时间 编辑:程序博客网 时间:2024/04/19 16:41
首先我们准备数据,准备一个map
- Map<String, String> map = new HashMap<String, String>();
- for (int i =0; i < 10; i++) {
- map.put(i + "", "value" + i);
- }
然后我们采用传说中的key遍历:
步骤:先弄成key set,然后遍历key set 通过key从map中获取value
- Iterator<String> iterator = map.keySet().iterator();
- while (iterator.hasNext()) {
- String key = iterator.next();
- String val = map.get(key);
- System.out.println(key + "->" + val);
- }
- System.out.println("*********************");
然后我们在采用entrySet的方式遍历下:
步骤:先弄成entrySet 然后遍历他,获取key和value
- Set<Entry<String, String>> set = map.entrySet();
- Iterator<Entry<String, String>> s = set.iterator();
- while (s.hasNext()) {
- Entry<String, String> en = s.next();
- String key = en.getKey();
- String val = en.getValue();
- System.out.println(key + "->" + val);
- }
孰优孰劣?
看JDK源码,对比两种访问方式:
首先看KeySet访问方式:
- public Set<K> keySet() {
- if (keySet == null) {
- keySet = new AbstractSet<K>() {
- public Iterator<K> iterator() {
- return new Iterator<K>() {
- private Iterator<Entry<K,V>> i = entrySet().iterator();
- public boolean hasNext() {
- return i.hasNext();
- }
- public K next() {
- return i.next().getKey();
- }
- public void remove() {
- i.remove();
- }
- };
- }
- public int size() {
- return AbstractMap.this.size();
- }
- public boolean contains(Object k) {
- return AbstractMap.this.containsKey(k);
- }
- };
- }
- return keySet;
- }
也就是调用entrySet()从entryset中获取key,也就是说是在entry set的基础上来做的,貌似多次一举
结论:
通过上述代码我们就知道,采用entrySet方式要优于keySet,因为keySet首先要访问entrySet来组建一个keySet,重复工作不言而喻
- hashMap的2中遍历方式比较
- HashMap的2种遍历方式比较
- Java中HashMap遍历的两种方式比较
- Java中的HashMap的2种遍历方式比较
- Java中HashMap遍历的两种方式及其效率比较
- Java中HashMap遍历的方式
- Java中HashMap的循环遍历方式
- 遍历HashMap方式的能效之差比较—求教
- HashMap 遍历的两种方式及性能比较
- HashMap的遍历方式
- HashMap的遍历方式
- HashMap的遍历方式
- 2种遍历HashMap元素的方式
- java遍历HashMap的方式
- 遍历 HashMap简单的方式
- HashMap的遍历最优方式
- hashmap的遍历最优方式
- Java中遍历HashMap的两种方式
- android wifi 系统
- 为高级 JSSE 开发人员定制 SSL
- 使用ADO访问数据源
- 转发一个最新HEVC-H.265码流分析软件
- MySQL性能优化的21个最佳实践
- hashMap的2中遍历方式比较
- Django 加密模块的应用
- Eclipse 配置 启动优化 快捷键
- 老外对pro中Install阐述
- 《Unix编程艺术》chm 电子书下载
- Throwable.fillInStackTrace()的用法
- Android Socket编程android端服务器和客户端的实现
- Android反射机制实现与原理
- hadoop深入研究:(三)——hdfs数据流