java Map遍歷最優

weixin_34365417發表於2016-01-13

遍歷方式詳細比較看這裡

綜合就幾句程式碼

  1. 同時遍歷key和value時,keySet與entrySet方法的效能差異取決於key的具體情況,如複雜度(複雜物件)、離散度、衝突率等。換言之,取決於HashMap查詢value的開銷。entrySet一次性取出所有 key和value的操作是有效能開銷的,當這個損失小於HashMap查詢value的開銷時,entrySet的效能優勢就會體現出來。例如上述對比測試中,當key是最簡單的數值字串時,keySet可能反而會更高效,耗時比entrySet少10%。總體來說還是推薦使用entrySet。因為當key很簡單時,其效能或許會略低於keySet,但卻是可控的;而隨著key的複雜化,entrySet的優勢將會明顯體現出來。當然,我們可以根據實際情況進行選擇
  2. 只遍歷key時,keySet方法更為合適,因為entrySet將無用的value也給取出來了,浪費了效能和空間。在上述測試結果中,keySet比entrySet方法耗時少23%。
  3. 只遍歷value時,使用vlaues方法是最佳選擇,entrySet會略好於keySet方法。
// 取鍵值
for(String key : map.keySet()) {  
  value = map.get(key);  
}
// 取鍵值
for(Map.Entry<String, String> entry: map.entrySet()) {  
  key = entry.getKey();  
  value = entry.getValue();  
}
// 取值
for (String value : map.values()) {  
}

相關文章