現象描述: 在生成環境發現,偶爾生產環境的某台機器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...