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来遍历效率更高