首页 > 编程知识 正文

map遍历的两种方式(java list遍历)

时间:2023-05-04 06:52:01 阅读:88409 作者:1537

1、由来

在什么样的时机选择什么样的扫描方法好呢? 只有通过实践比较,才能看到效率。 另外,我还读了很多文章。 建议使用entrySet。 entrySet在检索大数据量方面被认为是更快的。 今天,我们将通过以下方法来扫描关键值、关键值、值在不同情况下的差异:

2、准备测试数据:

HashMap1:大小为1000000,key和值都是字符串,key的值为1、2、3……1000000;

映射,字符串映射=新海量映射字符串,字符串(;

字串键,值;

for (英寸=1; I=数字; I ) {2}

key='' i;

值='值' I;

映射(密钥,值);

(}HashMap2)大小为1000000,关键点和值为字符串,关键点值为50、100、150……5000000;

映射,字符串映射=新海量映射字符串,字符串(;

字串键,值;

for (英寸=1; I=数字; I ) {2}

' (I * 50;

值='值'键;

映射(密钥,值);

{1}

3、场景测试

3.1遍历key+value

1 (密钥集利用迭代器进行遍历

长开始时间1=system.current time millis (;

迭代器字符串迭代器=映射.关键字() .迭代器);

wile(Iter.Hasnext () ) ) ) )。

key=iter.next (;

值=地图. get (密钥;

}

longen dtime1=system.current time millis (;

System.out.println (第一个程序的执行时间(() (结束时间1 -开始时间1 ) )毫秒) ); 2 ) keySet利用for遍历

长开始时间2=system.current time millis (;

for (字符串密钥2:映射.密钥集) ) )

值=地图. get (密钥2;

}

longen dtime2=system.current time millis (;

system.out.println(2 (第二个程序的执行时间(() (结束时间2 -开始时间2 ) )毫秒) ); 3 ) entrySet利用迭代器遍历

长开始时间3=system.current time millis (;

迭代器地图.条目字符串,字符串迭代器3=地图.迭代器() .迭代器);

地图入口串,字符串入口3;

wile(Iter3.Hasnext () ) ) ) ) ) ) ) )。

进入3=进入3 .下一个(;

key=entry3.getKey (;

值=条目3.getvalue (;

}

长时间3=系统.当前时间millis (;

system.out.println(3 (第三个程序的执行时间(() (结束时间3 -开始时间3 ) )毫秒) ); 4 ) entrySet利用for遍历

长开始时间4=system.current time millis (;

for (地图入口字符串,字符串入口4:地图入口() )。

key=entry4.getKey (;

值=条目4.getvalue (;

}

长时间4=系统.当前时间millis (;

system.out.println(4 (第四个程序的执行时间(() (结束时间4 -开始时间4 ) )毫秒) );

right">3.2遍历key

1)keySet利用Iterator遍历

long startTime1 =System.currentTimeMillis(); Iterator<String> iter = map.keySet().iterator(); while (iter.hasNext()){ key=iter.next(); } long endTime1 =System.currentTimeMillis(); System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");

2)keySet利用for遍历

long startTime2 =System.currentTimeMillis(); for(String key2:map.keySet()){ } long endTime2 =System.currentTimeMillis(); System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");

3)entrySet利用Iterator遍历

long startTime3=System.currentTimeMillis(); Iterator<Map.Entry<String,String>> iter3 =map.entrySet().iterator(); Map.Entry<String,String> entry3; while (iter3.hasNext()){ key = iter3.next().getKey(); } long endTime3 =System.currentTimeMillis(); System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");

4)entrySet利用for遍历

long startTime4=System.currentTimeMillis(); for(Map.Entry<String,String> entry4:map.entrySet()){ key=entry4.getKey(); } long endTime4 =System.currentTimeMillis(); System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");

3.3遍历value

1)keySet利用Iterator遍历

long startTime1 =System.currentTimeMillis(); Iterator<String> iter = map.keySet().iterator(); while (iter.hasNext()){ value=map.get(iter.next()); } long endTime1 =System.currentTimeMillis(); System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");

2)keySet利用for遍历

long startTime2 =System.currentTimeMillis(); for(String key2:map.keySet()){ value=map.get(key2); } long endTime2 =System.currentTimeMillis(); System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");

3)entrySet利用Iterator遍历

long startTime3=System.currentTimeMillis(); Iterator<Map.Entry<String,String>> iter3 =map.entrySet().iterator(); Map.Entry<String,String> entry3; while (iter3.hasNext()){ value=iter3.next().getValue(); } long endTime3 =System.currentTimeMillis(); System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");

4)entrySet利用for遍历

long startTime4=System.currentTimeMillis(); for(Map.Entry<String,String> entry4:map.entrySet()){ value=entry4.getValue(); } long endTime4 =System.currentTimeMillis(); System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");

5)values利用iterator遍历

long startTime5=System.currentTimeMillis(); Iterator<String> iter5=map.values().iterator(); while (iter5.hasNext()){ value=iter5.next(); } long endTime5 =System.currentTimeMillis(); System.out.println("第五个程序运行时间:"+(endTime5-startTime5) +"ms");

6)values利用for遍历

long startTime6=System.currentTimeMillis(); for(String value6:map.values()){ } long endTime6 =System.currentTimeMillis(); System.out.println("第六个程序运行时间:"+(endTime6-startTime6) +"ms");

4、时间对比

4.1遍历key+value

4.2遍历key

4.3遍历value

5、总结

从上面的时间比较来看:

1)map的key采用简单形式和复杂形式时,查找的效率是不同的,简单的key值效率更高

2)当数据量大的时候,采用entrySet遍历key+value的效率要高于keySet

3)当我们只需要取得value值时,采用values来遍历效率更高

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。