HashMap中推荐使用entrySet方式遍历Map类集合KV而不是keySet方式遍历
我们先来做一个测试
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方式遍历的更多相关文章
- java 遍历map 方法 集合 五种的方法
package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...
- Map类集合遍历
- 高度注意 Map 类集合 K/V 能不能存储 null 值的情况
集合类 Key Value Super 说明 Hashtable 不允许为 null 不允许为 null Dictionary 线程安全 ConcurrentHashMap 不允许为 null 不允许 ...
- Map类集合
集合类 Key Value ...
- Java中应该返回零长度数组或空集合,而不是返回null(转)
说明:为了避免在数组和集合的获取上增加null的判断,同时也能减少不必要的空指针异常,通常会在业务返回零数组或空集合. 方法: 1.数组: 定义全局静态常量来减少内存开销:private static ...
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_11_练习:集合元素处理(Stream方式)
- java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1 ...
- Java之五种遍历Map集合的方式
摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历. 在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历.这篇文章主要给大家介 ...
- 遍历map的几种方式
1,平时开发中对map的使用很多,然后发现了很多map可能存在的各种问题:如HashMap 需要放置 1024 个元素,由于没有设置容量初始大小,随着元素不断增加,容量 7 次被迫扩大,resize ...
随机推荐
- git之路
1.如何clone代码到本地 答:git clone https://github.com/antirez/redis.git 2.
- Educational Codeforces Round 76 (Rated for Div. 2) B. Magic Stick
Recently Petya walked in the forest and found a magic stick. Since Petya really likes numbers, the f ...
- [蓝桥杯][基础训练]FJ的字符串
Description FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律 ...
- selenium通过cookies直接免密登录
前提知识: 1.webdriver中提供了操作cookie的相关方法: get_cookies() 获得cookie信息 add_cookie(cookie_di ...
- 如何在项目中新建.gitignore文件
1. 在需要创建 .gitignore 文件的文件夹, 右键选择 Git Bash 进入命令行,进入项目所在目录. 2. 输入 touch .gitignore 在文件夹就生成了一个“.gitigno ...
- sklearn 线性回归
# import numpy as np import pandas as pd from pandas import Series,DataFrame import matplotlib.pyplo ...
- 【Python redis】
目录 基本用法 连接池 基本命令 String Hash List set "下载:pip install redis @ *** 基本用法 redis库提供两个类,Redis和Strict ...
- UVA 10881 Piotr's Ants(模拟)
题目链接:https://vjudge.net/problem/UVA-10881 其实这道题的关键只有一句话: 当两个蚂蚁因碰撞而掉头的时候,我们完全可以认为是两个点对穿而过. 这时候我们的主要任务 ...
- java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方法
解决方法 第一种方法:导入commons-logging.jar包 第二种方法,如果用的是maven项目,则直接在pom.xml中加入commons-logging依赖包,如下: <depend ...
- bootstrap fileinput上传文件
参考博客:https://blog.csdn.net/linhaiyun_ytdx/article/details/76215974 https://www.cnblogs.com/parker-y ...