java中Map集合遍历方式总结
一、遍历方式
栗子:
final TimeInterval timer = new TimeInterval();
Map<String, Object> hashMap = new HashMap<>();
for (int i = 1; i < 100000; i++) {
hashMap.put("number" + i,i);
}
// 分组1
timer.start("1");
// 遍历1
for (String key : hashMap.keySet()) {
System.out.println("key= "+ key + " and value= " + hashMap.get(key));
}
// 分组2
timer.start("2");
// 遍历2
// 删除使用这种
Iterator<Map.Entry<String, Object>> iterator = hashMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
System.out.println("key= "+ entry.getKey() + " and value= " + entry.getValue());
}
// 分组3
timer.start("3");
// 遍历3
for (Map.Entry<String,Object> entry : hashMap.entrySet()) {
System.out.println("key= "+ entry.getKey() + " and value= " + entry.getValue());
}
// 分组4
timer.start("4");
// 遍历4
System.out.println("只能获取value");
for (Object v : hashMap.values()) {
System.out.println("value= " + v);
}
// 分组5
timer.start("5");
// 遍历5
hashMap.forEach((key,value) -> {
System.out.println(key + ":" + value);
});
Console.log("for循环 Map.keySet遍历key和value took {} ms", timer.intervalMs("1"));
Console.log("迭代器 Map.entrySet遍历key和value took {} ms", timer.intervalMs("2"));
Console.log("for循环 Map.entrySet遍历key和value took {} ms", timer.intervalMs("3"));
Console.log("for循环 Map.values()遍历value took {} ms", timer.intervalMs("4"));
Console.log("java8 lambda表达式forEach遍历key和value took {} ms", timer.intervalMs("5"));
for 循环 Map.keySet遍历key和value took 2289 ms
迭代器 Map.entrySet遍历key和value took 1843 ms
for 循环 Map.entrySet遍历key和value took 1405 ms
for 循环 Map.values()遍历value took 966 ms
java8 lambda表达式 forEach遍历key和value took 529 ms