原博
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....