HashMap的遍历最优方式建议使用entrySet()的方式,因为在数据量比较大的时候,它的效率更高。
话不多说,请看下面的源代码
public static void testEfficiency(){
HashMap hmap = new HashMap();
for(int i=0;i<100;i++){
hmap.put("key"+i, i*10);
}
System.out.println("------遍历方式1:使用entrySet----遍历key和value----------------------");
long start1 = System.currentTimeMillis();
for (Iterator it = hmap.entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());
}
long end1 = System.currentTimeMillis();
System.out.println("方式一,耗时:"+(end1-start1) +"ms");
System.out.println("------遍历方式2:使用keySet----遍历key和value----------------------");
long start2 = System.currentTimeMillis();
for (Iterator it = hmap.keySet().iterator(); it.hasNext();) {
String key= (String) it.next();
System.out.println(key + "=" + hmap.get(key));
}
long end2 = System.currentTimeMillis();
System.out.println("方式二,耗时:"+(end2-start2) +"ms");
}
执行上面的代码后,会出现下面的结果:
key79=790
key78=780
key38=380
key39=390
key34=340
key35=350
key36=360
·
·
·
·
·
·
key28=280
key76=760
key27=270
key75=750
key74=740
key29=290
方式一,耗时:1ms
——遍历方式2:使用keySet—-遍历key和value———————-
key79=790
key78=780
key38=380
key39=390
key34=340
key35=350
·
·
·
·
·
·
key71=710
key26=260
key70=700
key25=250
key77=770
key28=280
key76=760
key27=270
key75=750
key74=740
key29=290
方式二,耗时:2ms
所以,从上面的简单的比较,可以得出当我们需要遍历HashMap的时候,使用EntrySet的遍历的方式效率更高,尤其是数据量比较大的时候,效果越明显。
同步更新:HashMap的遍历最优方式