【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式
参考链接:https://www.cnblogs.com/crazyacking/p/5573528.html
==================================
java紫色代表迭代方式
效率测试:100W
==================================
HashMap迭代方式1:entrySet迭代
public static void main(String[] args) {
Map<String,String> hashMap = new HashMap<>();
long beginTime = System.currentTimeMillis();
System.out.println("hashMap存储开始时间-->"+beginTime);
for (int i = 0; i < ; i++) {
hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
}
long endTime = System.currentTimeMillis();
System.out.println("hashMap存储结束时间-->"+endTime);
System.out.println("hashMap存储消耗:"+(endTime-beginTime)+"ms");
System.out.println("hashMap【entrySet方式】读取开始时间-->"+endTime);
//可以使用外部定义变量
for (Map.Entry<String,String> entry : hashMap.entrySet()){
System.out.println(entry.getKey() + ":" + entry.getValue());
}
long endTime2 = System.currentTimeMillis();
System.out.println("hashMap【entrySet方式】读取结束时间-->"+endTime2);
System.out.println("hashMap【entrySet方式】读取消耗:"+(endTime2-endTime)+"ms");
}


===================================================================
HashMap迭代方式2:keySet迭代
public static void main(String[] args) {
Map<String,String> hashMap = new HashMap<>();
long beginTime = System.currentTimeMillis();
System.out.println("hashMap存储开始时间-->"+beginTime);
for (int i = 0; i < ; i++) {
hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
}
long endTime = System.currentTimeMillis();
System.out.println("hashMap存储结束时间-->"+endTime);
System.out.println("hashMap存储消耗:"+(endTime-beginTime)+"ms");
System.out.println("hashMap【keySet方式】读取开始时间-->"+endTime);
//可以使用外部定义变量
Set<String> keySet = hashMap.keySet();
for (String s : keySet) {
System.out.println(s+":"+hashMap.get(s));
}
long endTime2 = System.currentTimeMillis();
System.out.println("hashMap【keySet方式】读取结束时间-->"+endTime2);
System.out.println("hashMap【keySet方式】读取消耗:"+(endTime2-endTime)+"ms");
}


=================================================================
HashMap迭代方式3:forEach方式
public static void main(String[] args) {
Map<String,String> hashMap = new HashMap<>();
long beginTime = System.currentTimeMillis();
System.out.println("hashMap存储开始时间-->"+beginTime);
for (int i = 0; i < ; i++) {
hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
}
long endTime = System.currentTimeMillis();
System.out.println("hashMap存储结束时间-->"+endTime);
System.out.println("hashMap存储消耗:"+(endTime-beginTime)+"ms");
System.out.println("hashMap【forEach方式】读取开始时间-->"+endTime);
//不能使用外部定义变量 除非final类型 例如:List
hashMap.forEach((k,v)->{
System.out.println(k +":"+v);
});
long endTime2 = System.currentTimeMillis();
System.out.println("hashMap【forEach方式】读取结束时间-->"+endTime2);
System.out.println("hashMap【forEach方式】读取消耗:"+(endTime2-endTime)+"ms");
}


=======================================================================================================
TreeMap迭代:entrySet方式
public static void main(String[] args) {
Map<String,String> hashMap = new TreeMap<>();
long beginTime = System.currentTimeMillis();
System.out.println("TreeMap存储开始时间-->"+beginTime);
for (int i = 0; i < 1000000; i++) {
hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
}
long endTime = System.currentTimeMillis();
System.out.println("TreeMap存储结束时间-->"+endTime);
System.out.println("TreeMap存储消耗:"+(endTime-beginTime)+"ms");
System.out.println("TreeMap【entrySet方式】读取开始时间-->"+endTime);
//可以使用外部定义变量
for (Map.Entry<String,String> entry : hashMap.entrySet()){
System.out.println(entry.getKey() + ":" + entry.getValue());
}
long endTime2 = System.currentTimeMillis();
System.out.println("TreeMap【entrySet方式】读取结束时间-->"+endTime2);
System.out.println("TreeMap【entrySet方式】读取消耗:"+(endTime2-endTime)+"ms");
}


=================================================
TreeMap迭代:keySet方式
public static void main(String[] args) {
Map<String,String> hashMap = new TreeMap<>();
long beginTime = System.currentTimeMillis();
System.out.println("TreeMap存储开始时间-->"+beginTime);
for (int i = 0; i < 1000000; i++) {
hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
}
long endTime = System.currentTimeMillis();
System.out.println("TreeMap存储结束时间-->"+endTime);
System.out.println("TreeMap存储消耗:"+(endTime-beginTime)+"ms");
System.out.println("TreeMap【keySet方式】读取开始时间-->"+endTime);
//可以使用外部定义变量
Set<String> keySet = hashMap.keySet();
for (String s : keySet) {
System.out.println(s+":"+hashMap.get(s));
}
long endTime2 = System.currentTimeMillis();
System.out.println("TreeMap【keySet方式】读取结束时间-->"+endTime2);
System.out.println("TreeMap【keySet方式】读取消耗:"+(endTime2-endTime)+"ms");
}


==========================================================
TreeMap迭代:forEach方式
public static void main(String[] args) {
Map<String,String> hashMap = new TreeMap<>();
long beginTime = System.currentTimeMillis();
System.out.println("TreeMap存储开始时间-->"+beginTime);
for (int i = 0; i < 1000000; i++) {
hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
}
long endTime = System.currentTimeMillis();
System.out.println("TreeMap存储结束时间-->"+endTime);
System.out.println("TreeMap存储消耗:"+(endTime-beginTime)+"ms");
System.out.println("TreeMap【forEach方式】读取开始时间-->"+endTime);
//不能使用外部定义变量 除非final类型 例如:List
hashMap.forEach((k,v)->{
System.out.println(k +":"+v);
});
long endTime2 = System.currentTimeMillis();
System.out.println("TreeMap【forEach方式】读取结束时间-->"+endTime2);
System.out.println("TreeMap【forEach方式】读取消耗:"+(endTime2-endTime)+"ms");
}


=========================================================
100W级别
基本判断【并不准确】:HashMap存储效率高,读取效率也比较高
TreeMap存储效率低,读取效率差不多
=========================================================
1000W级别
【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式的更多相关文章
- 细说java中Map的两种迭代方式
曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...
- 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法
具体见第三阶段scala-day01中的文档(scala编程基础---基础语法) 1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...
- JavaScript高级编程——Array数组迭代(every()、filter()、foreach()、map()、some(),归并(reduce() 和reduceRight() ))
JavaScript高级编程——Array数组迭代(every().filter().foreach().map().some(),归并(reduce() 和reduceRight() )) < ...
- Map中keySet和entrySet的区别
在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet():将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键, ...
- java map在JSTL EL中的小应用--<c:forEach>遍历Map<>泛型
准 备 数 据 :(自己准备吧少年,考验你时候到了!!) /** 结构示意图: 类型: List集合 map对象 LIst集合 Person类对象 String name : int age mLis ...
- Java中Map的4种遍历方式
第一种方式:这是平常用的最多也最可取的一种遍历方式. for (Map.Entry<String, Object> entry : map.entrySet()) { System.out ...
- 空数组在以下三种遍历中均不可更改:forEach、map和for...in
首先,我们要知道对于forEach.map和for...in三种遍历,在不是空数组的情况下,要想实现更改原数组的方法,代码如下: var list = [1,2,3,4]; var list1 = [ ...
- Java 程序测试_循环语句中的break和continue
package test; public class Loop_Statement { public static void main(String [] args) { String[] newba ...
- 实在没想到系列——HashMap实现底层细节之keySet,values,entrySet的一个底层实现细节
我在看HashMap源码的时候发现了一个没思考过的问题,在这之前可以说是完全没有思考过这个问题,在一开始对这个点有疑问的时候也没有想到居然有这么个语法细节存在,弄得我百思不得其解,直到自己动手做实验改 ...
随机推荐
- 极简Node教程-七天从小白变大神(二:中间件是核心)
当我们只引入express时,前述的那些功能都是没有启用的.那么,如何将这些功能添加进来呢?express通过其中间件机制实现了这些功能的管理.每一个中间件对应一个功能,而中间件可以是第三方库,也可以 ...
- IOS开发---菜鸟学习之路--(十二)-利用ASIHTTPRequest进行异步获取数据
想要实现异步获取的话我这边了解过来有两个非常简单的方式 一个是利用ASIHTTPRequest来实现异步获取数据 另一个则是利用MBProgressHUD来实现异步获取数据 本章就先来讲解如何利用AS ...
- 【Remove Nth Node From End of List】cpp
题目: Given a linked list, remove the nth node from the end of list and return its head. For example, ...
- plsql 编程基础
分支 declare --声明变量 a ); b ); c ); begin --开始 a := '小明'; dbms_output.put_line(a); b :; c :; if b > ...
- 解决pymysql不能实时查询最新的数据
#在网上查询到的原因为: InnoDB 的默认隔离级别.它可以防止任何被查询的行被其他事务更改,从而阻止不可重复的读取,而不是 幻读取.它使用中度严格的锁定策略,以便事务内的所有查询都会查看同一快照中 ...
- Ecplise实战常用操作快捷键(更新至2018年10月8日 13:46:40)
ctrl+鼠标左键 进入/查看这个类或者方法, ctrl + t 快速类型层次结构(出现部分方法) ctrl + o 快速大 ...
- @SpringBootApplication的扫描范围
在公共类自定义一个全局异常类,实现全局捕获异常,在另一个服务中调用的时候,发现没有生效 因此我添加了一个@ComponentScan("com.wuhen.jwt.common") ...
- ServletConfig和ServletContext 区别
ServletConfig和ServletContext 1.ServletContext在整个web应用程序生命周期内存在,用来保存全局对象,整个web应用都可以使用其获取context参数.当 ...
- 3种jQuery弹出大图效果
本实例用到了jquery.imgbox.pack.js库.直接看代码: <!DOCTYPE html> <html lang="en"> <head& ...
- event对象的兼容性
最近在调试项目的时候,发现IE和Chrome都显示正常,就是FireFox异常,F12查看控制台,发现报错:window.event is undefined.检查代码中定义的事件方法中获取事件对象直 ...