1、由来
上次博客提到了Map的四种遍历方法,其中有的只是获取了key值或者是value值,但我们应该在什么时刻选择什么样的遍历方式呢,必须通过实践的比较才能看到效率。
也看了很多文章,大家建议使用entrySet,认为entrySet对于大数据量的查找来说,速度更快,今天我们就通过下面采用不同方法遍历key+value,key,value不同情景下的差异。
2、准备测试数据:
HashMap1:大小为1000000,key和value的值均为String,key的值为1、2、3.........1000000;
HashMap2:大小为1000000,key和value的值为String,key的值为50、100、150........50000000;
3.测试
自行测试..................
4、时间对比
4.1遍历key+value
遍历内容:key+value | HashMap1 | HashMap2 |
keySet用iterator遍历 | 56 | 93 |
Keyset用for遍历 | 50 | 91 |
entrySet用iterator遍历 | 40 | 70 |
entrySet用for遍历 | 41 | 73 |
4.2遍历key
遍历内容:key | HashMap1 | HashMap2 |
keySet用iterator遍历 | 37 | 58 |
Keyset用for遍历 | 34 | 57 |
entrySet用iterator遍历 | 38 | 56 |
entrySet用for遍历 | 34 | 58 |
4.3遍历value
遍历内容:value | HashMap1 | HashMap2 |
keySet用iterator遍历 | 65 | 86 |
Keyset用for遍历 | 54 | 80 |
entrySet用iterator遍历 | 42 | 61 |
entrySet用for遍历 | 44 | 61 |
Values用iterator遍历 | 37 | 63 |
Values用for遍历 | 47 | 54 |
5、总结
从上面的时间比较来看:
1)map的key采用简单形式和复杂形式时,查找的效率是不同的,简单的key值效率更高
2)当数据量大的时候,采用entrySet遍历key+value的效率要高于keySet
3)当我们只需要取得value值时,采用values来遍历效率更高