HashMap最快遍歷

兩大foreach方式

目前測試的結(jié)果 foreach 與 顯示調(diào)用 Iterator 的性能上幾乎等價,因此只說明以下的兩種方式。

  1. map.entrySet()
Map<String, String> map = new HashMap<String, String>();
for (Entry<String, String> entry : map.entrySet()) {
entry.getKey();
entry.getValue();
}
  • 分析
    entrySet()返回的是set的迭代器 ,其返回的entry對象中包含了 key 和 value 當(dāng)獲取key 或這value的是時候,其實就是取其中的屬性,因此性能是相對較高的。
  1. map.keySet()
Map<String, String> map = new HashMap<String, String>();
for (String key : map.keySet()) {
map.get(key);
}
  • 分析
    keySet() 返回的也是set的迭代器,但是其中只有key的集合內(nèi)容,當(dāng)需要獲取value時,還需要主動調(diào)用 map.get(key),此時的迭代效率就相當(dāng)?shù)穆?,其效率的高低,get的時間復(fù)雜度根據(jù)hash算法而異。
  • 總結(jié)
    視需求來定, 需要key 和 value的值,還是使用第一種比較好,只需要key的,還是使用第二種。

純屬個人理解。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java集合類可用于存儲數(shù)量不等的對象,并可以實現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)如棧,隊列等,Java集合還可以用于保存具有映射關(guān)...
    小徐andorid閱讀 2,079評論 0 13
  • 1. Map的四種遍歷方式 下面只是簡單介紹各種遍歷示例(以HashMap為例),各自優(yōu)劣會在本文后面進行分析給出...
    陳煦緣閱讀 958評論 0 0
  • 自定義泛型 1.1、泛型的定義介紹 在集合中,不管是接口還是類,它們在定義的時候類或接口名的后面都使用<標(biāo)識符>,...
    Villain丶Cc閱讀 8,986評論 0 7
  • 墨記·日歌(壹佰壹拾貳·2018.8.22) 愛之殤:黑色幕布 1 你是一塊巨大的幕布,我的舞臺等待著你開啟或降落...
    湖北葉瀟閱讀 453評論 1 2
  • 要知道,適當(dāng)?shù)乜人詫θ梭w是有益的,一天不超過10次的干咳,可以不用處理。 我們整理了咳嗽化痰的攻略,一定要鑒別是何...
    想你是件很美的事閱讀 125評論 0 0

友情鏈接更多精彩內(nèi)容