遍历Map的几种写法比较
1.keySet
2.entrySet
3.forEach
@Test
public void test(){
HashMap<String, Object> map = new HashMap<>();
for (int i = 0; i < 10000000; i++) {
map.put("key:"+i,i+"阿斯顿马丁");
}
//System.out.println(map);
long start = System.currentTimeMillis();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().equals("key---1000")){
map.replace("key---1000","newkey1000");
}
}
long finish = System.currentTimeMillis();
long timeElapsed = finish - start;
System.out.println("entrySet方法耗时:"+timeElapsed);
long start1 = System.currentTimeMillis();
for (String s : map.keySet()) {
if (s.equals("newkey1000")){
map.replace("newkey1000","newkey1000Plus");
}
}
long finish1 = System.currentTimeMillis();
long timeElapsed1 = finish1 - start1;
System.out.println("keySet方法耗时:"+timeElapsed1);
long start3 = System.currentTimeMillis();
map.forEach((key,value)->{
if (key.equals("newkey1000Plus")){
map.replace("newkey1000Plus","newkey1000PlusBoot");
}
});
long finish3 = System.currentTimeMillis();
long timeElapsed3 = finish3 - start3;
System.out.println("forEach方法耗时:"+timeElapsed3);
}
entrySet方法耗时:246
keySet方法耗时:242
forEach方法耗时:220