使用entrySet遍歷HashMap

2021-08-25 21:42:53 字數 520 閱讀 8218

現象描述: 在生成環境發現,偶爾生產環境的某台機器cpu使用率很高,經過定位發現是有乙個大的hashmap(hashmap裡面存放了大量資料,比如1w條)做迴圈引起的。

遍歷乙個hashmap

for(iterator ite = map.keyset().iterator(); ite.hasnext();)
通過map類的get(key)方法獲取value時,會進行兩次hashcode的計算,消耗cpu資源;而使用entryset的方式,map物件會直接返回其儲存key-value的原始資料結構物件,遍歷過程無需進行錯誤**中耗費時間的hashcode計算; 這在大資料量下,體現的尤為明顯。

以下是hashmap.get()方法的原始碼:

public v get(object key) 

return null;

}

正確用法:

for(iterator ite = map.entryset().iterator(); ite.hasnext();)

使用entrySet遍歷HashMap

現象描述 在生成環境發現,偶爾生產環境的某台機器cpu使用率很高,經過定位發現是有乙個大的hashmap hashmap裡面存放了大量資料,比如1w條 做迴圈引起的。遍歷乙個hashmap for iterator ite map.keyset iterator ite.hasnext 通過map類...

entrySet用法 以及遍歷map的用法

keyset是 鍵的集合,set裡面的型別即key的型別 entryset是 鍵 值對的集合,set裡面的型別是map.entry 1.keyset map map new hashmap iterator it map.keyset iterator object key object value...

entrySet用法 以及遍歷map的用法

keyset是鍵的集合,set裡面的型別即key的型別 entryset是 鍵 值 對的集合,set裡面的型別是map.entry 1.keyset map map new hashmap iterator it map.keyset iterator object key object value...