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

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 < 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<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");
}


【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_i++

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_html_02

 

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

 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 < 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<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");
}


【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_java_03

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_迭代_04

 

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

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 < 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");
}


【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_迭代_05

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_java_06

 

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

 

 TreeMap迭代:entrySet方式


【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_迭代_07【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_html_08


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");
}

View Code

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_java_09

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_i++_10

 

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

TreeMap迭代:keySet方式


【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_迭代_07【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_html_08


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");
}

View Code

 【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_java_13

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_i++_14

 

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

TreeMap迭代:forEach方式


【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_迭代_07【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_html_08


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");
}

View Code

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_i++_17

【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式  +  map的几种迭代方式_java_18

 

 

 

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

100W级别

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

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

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

 1000W级别