博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式...
阅读量:6208 次
发布时间:2019-06-21

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

参考链接:https://www.cnblogs.com/crazyacking/p/5573528.html

 ==================================

java紫色代表迭代方式

效率测试:100W 

==================================

 

 HashMap迭代方式1:entrySet迭代

public static void main(String[] args) {        Map
hashMap = new HashMap<>(); long beginTime = System.currentTimeMillis(); System.out.println("hashMap存储开始时间-->"+beginTime); for (int i = 0; i < 1000000; 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
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
hashMap = new HashMap<>(); long beginTime = System.currentTimeMillis(); System.out.println("hashMap存储开始时间-->"+beginTime); for (int i = 0; i < 1000000; 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
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
hashMap = new HashMap<>(); long beginTime = System.currentTimeMillis(); System.out.println("hashMap存储开始时间-->"+beginTime); for (int i = 0; i < 1000000; 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
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
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"); }
View Code

 

=================================================

TreeMap迭代:keySet方式

public static void main(String[] args) {        Map
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
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"); }
View Code

 

 

==========================================================

TreeMap迭代:forEach方式

public static void main(String[] args) {        Map
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"); }
View Code

 

 

 

=========================================================

100W级别

基本判断【并不准确】:HashMap存储效率高,读取效率也比较高

           TreeMap存储效率低,读取效率差不多

=========================================================

 1000W级别

 

转载于:https://www.cnblogs.com/sxdcgaq8080/p/9014811.html

你可能感兴趣的文章
Java入门系列-22-IO流
查看>>
Template、ItemsPanel、ItemContainerStyle、ItemTemplate
查看>>
MySQL:Innodb page clean 线程 (二) :解析
查看>>
图嵌入综述 (arxiv 1709.07604) 译文五、六、七
查看>>
垃圾回收算法优缺点对比
查看>>
正则表达式 匹配常用手机号 (13、15\17\18开头的十一位手机号)
查看>>
GitLab 11.9 正式发布,自动化工具 ChatOps 已开源
查看>>
交换机的基本原理配置(一)
查看>>
android baidupush
查看>>
Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果
查看>>
Linux_异常_08_本机无法访问虚拟机web等工程
查看>>
“陪护机器人”研报:距离真正“陪护”还差那么一点
查看>>
深入框架本源系列 —— Virtual Dom
查看>>
mongodb分布式集群搭建手记
查看>>
您有一个上云锦囊尚未领取!
查看>>
Java Web的web.xml文件作用及基本配置(转)
查看>>
区块链101:区块链的应用和用例是什么?
查看>>
马约拉纳费米子:推动量子计算的“天使粒子”
查看>>
瑞立视:厚积薄发且具有“工匠精神”的中国品牌
查看>>
git与svn的区别 ?Git 与 SVN那个更好?
查看>>