Java HashMap 遍歷方式效能探討
阿新 • • 發佈:2019-01-26
JDK8之前,可以使用keySet或者entrySet來遍歷HashMap,JDK8中引入了map.foreach來進行遍歷。
原因:
keySet其實是遍歷了2次,一次是轉為Iterator物件,另一次是從hashMap中取出key所對應的value。而entrySet只是遍歷了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。
1. keySet和entrySet
1.1 基本用法
keySet:
1 2 3 4 5 6 7 8 9 |
Map
map= new
HashMap();
Iterator
it=map.keySet().iterator();
Object
key;
Object
value;
while (it.hasNext()){
key=it.next();
value=map.get(key);
System.out.println(key+ ":" +value);
}
|
entrySet:
1 2 3 4 5 6 7 8 9 10 |
Map
map= new
HashMap();
Iterator
it=map.entrySet().iterator();
Object
key;
Object
value;
while (it.hasNext()){
Map.Entry
entry = (Map.Entry)it.next();
key=entry.getKey();
value=entry.getValue();
System.out.println(key+ "=" +value);
}
|
原始碼上看:
keySet:
1 2 3 4 |
final
class
KeyIterator extends
HashIterator
implements
Iterator<K> {
public
final
K next() { return
|