我们先来做一个测试

public class HashMapTest {
private HashMap<String, String> map = new HashMap<>(); @Before
public void beforeAllMethodTestInClass() {
for (int i = 0; i < 100000; i++) {
map.put("a" + i, "aa" + i);
map.put("b" + i, "bb" + i);
map.put("c" + i, "cc" + i);
map.put("d" + i, "dd" + i);
}
} @Test
public void entrySetTest() {
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); long startTime = System.currentTimeMillis();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
} @Test
public void keySetTest() {
Iterator<String> it = map.keySet().iterator(); long startTime = System.currentTimeMillis();
while (it.hasNext()) {
String key = it.next();
System.out.println(key + "=" + map.get(key));
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
} }
多次测试,我们可以发现方法keySetTest()时间大约为2s809ms,
而entrySetTest()只有2s98ms,从测试上来说,后者运行时间小于前者。 原来,因为entrySet遍历的时候,存放的是Map.Entry<T, T>类型,
意思是,在进行遍历的时候已经把key、value放入其中。
而keySet遍历的时候,存放的是T类型,
意思是,在进行遍历的时候只放了key值,
倘若我还需要value,就还需要使用 public V get(Object key) 方法

注:本博客旨在记录,不作任何商用,如有侵犯,请联系博主(1258971228@qq.com)删除!

HashMap中推荐使用entrySet方式遍历Map类集合KV而不是keySet方式遍历的更多相关文章

  1. java 遍历map 方法 集合 五种的方法

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  2. Map类集合遍历

  3. 高度注意 Map 类集合 K/V 能不能存储 null 值的情况

    集合类 Key Value Super 说明 Hashtable 不允许为 null 不允许为 null Dictionary 线程安全 ConcurrentHashMap 不允许为 null 不允许 ...

  4. Map类集合

    集合类                                        Key                            Value                     ...

  5. Java中应该返回零长度数组或空集合,而不是返回null(转)

    说明:为了避免在数组和集合的获取上增加null的判断,同时也能减少不必要的空指针异常,通常会在业务返回零数组或空集合. 方法: 1.数组: 定义全局静态常量来减少内存开销:private static ...

  6. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_11_练习:集合元素处理(Stream方式)

  7. java 遍历Map的四种方式

      java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1 ...

  8. Java之五种遍历Map集合的方式

    摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历. 在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历.这篇文章主要给大家介 ...

  9. 遍历map的几种方式

    1,平时开发中对map的使用很多,然后发现了很多map可能存在的各种问题:如HashMap 需要放置 1024 个元素,由于没有设置容量初始大小,随着元素不断增加,容量 7 次被迫扩大,resize ...

随机推荐

  1. 如何使用 idea提交svn代码

    链接:https://jingyan.baidu.com/article/b2c186c80d81b1c46ff6ff59.html

  2. Bug搬运工-CSCux99539:Intermittent error message "Power supply 2 failed or shutdown"

    Description Symptom:Following error messages will be seen intermittently.%PFMA-2-PS_FAIL: Power supp ...

  3. 1.4、WebRTC源码

    文章导读:本篇文章给读者展示WebRTC的源码目录结构,为读者构建全方位的知识体系,如果你有兴趣下载webrtc的源码来编译运行,本节内容可以作为你了解源码的简要说明书,webrtc源码非常庞大的,讲 ...

  4. HttpServer带阻塞性能比较

    服务端在返回hello,world! 之前先阻塞一秒钟,模拟访问DB等耗时操作. Netty 我直接在 WorkerGroup 里头sleep,用同步阻塞线程模型的方式来编程,所以性能暴降. Joob ...

  5. 关于excuteQuery与execute()

    excuteQuery是查询语句,如果是更新或者插入或报错,换成execute()就好了

  6. 解决VMware Workstation下Win2012R2无法安装Hyper-v问题

    有时候我们需要测试Hyper-V但是发现VMware下不能够正常安装,提示:验证过程发现你要安装功能的服务器存在问题.所选功能与所选服务器的当前配置不兼容.无法安装Hyper-V:虚拟机监控程序已在运 ...

  7. JavaScript 事件 继承链 元素和结点

    继承链: HTMLElement->Element->Node->EventTarget->Object document和body:document代表整个文档,body是指 ...

  8. Python(三)enumerate函数

    原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177932 ...

  9. 基于springboot实现轮询线程自动执行任务

    本文使用: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时 ...

  10. Rsync+inotify数据同步

    安装环境 备份服务器端:CentOS7,IP:192.168.1.100 备份客户端:CentOS7,IP:192.168.1.200 服务器端Rsync服务部署 1.安装程序包 # yum –y i ...