Map遍歷效率比較

2021-08-29 04:41:49 字數 1852 閱讀 1509

原博

1、由來     

上次部落格提到了map的四種遍歷方法,其中有的只是獲取了key值或者是value值,但我們應該在什麼時刻選擇什麼樣的遍歷方式呢,必須通過實踐的比較才能看到效率。

也看了很多文章,大家建議使用entryset,認為entryset對於大資料量的查詢來說,速度更快,今天我們就通過下面採用不同方法遍歷key+value,key,value不同情景下的差異。

2、準備測試資料:

hashmap1:大小為1000000,key和value的值均為string,key的值為1、2、3.........1000000;

mapmap =new hashmap();

string key,value;

for(int i=1;i<=num;i++)

hashmap2:大小為1000000,key和value的值為string,key的值為50、100、150........50000000;

mapmap = new hashmap();

string key,value;

for(int i=1;i<=num;i++)

3、場景測試

3.1遍歷key+value

1)keyset利用iterator遍歷

2)keyset利用for遍歷

3)entryset利用iterator遍歷

4)entryset利用for遍歷

3.2遍歷key

1)keyset利用iterator遍歷

2)keyset利用for遍歷

3)entryset利用iterator遍歷

4)entryset利用for遍歷

3.3遍歷value

1)keyset利用iterator遍歷

2)keyset利用for遍歷

3)entryset利用iterator遍歷

4)entryset利用for遍歷

5)values利用iterator遍歷

6)values利用for遍歷

4、時間對比

4.1遍歷key+value

遍歷內容:key+value

hashmap1

hashmap2

keyset用iterator遍歷

5693

keyset用for遍歷

5091

entryset用iterator遍歷

4070

entryset用for遍歷

4173

4.2遍歷key

遍歷內容:key

hashmap1

hashmap2

keyset用iterator遍歷

3758

keyset用for遍歷

3457

entryset用iterator遍歷

3856

entryset用for遍歷

3458

4.3遍歷value

遍歷內容:value

hashmap1

hashmap2

keyset用iterator遍歷

6586

keyset用for遍歷

5480

entryset用iterator遍歷

4261

entryset用for遍歷

4461

values用iterator遍歷

3763

values用for遍歷

4754

5、總結

從上面的時間比較來看:

1)map的key採用簡單形式和複雜形式時,查詢的效率是不同的,簡單的key值效率更高

2)當資料量大的時候,採用entryset遍歷key+value的效率要高於keyset

Map遍歷效率比較

1 由來 上次部落格提到了map的四種遍歷方法,其中有的只是獲取了key值或者是value值,但我們應該在什麼時刻選擇什麼樣的遍歷方式呢,必須通過實踐的比較才能看到效率。也看了很多文章,大家建議使用entryset,認為entryset對於大資料量的查詢來說,速度更快,今天我們就通過下面採用不同方法...

3種場景不同方法遍歷Map集合的效率比較

只遍歷 key 只遍歷 value 測試結果 小結 hashmap1 大小為1000000,key和value的值均為string,key的值為1 2 3.1000000 mapmap1 newhashmap string key1,value1 for int i 1 i 1000000 i ha...

Map集合的遍歷及比較

在平時開發中,經常會遍歷集合。三大集合list,set,map既可以使用iterator迭代器遍歷也可以使用高階for迴圈 for each 遍歷。下來我們主要來看看map集合的遍歷。map集合的遍歷方式 public static void main string args system.out....