Java编程经验分享——高效的遍历Map
1、通常用java的map使用很多的是通过如下方式实例化map:Map<k,v>map = new HashMap<k,v>();之前给大家分享的是通过map的keySet方法获取到键的集合,然后进行循环遍历,详细见另一篇经验。但是这种方式其实是有问题的,该方式要多建立一个key的集合,浪费存储空间。那么接下来看看怎样更搞笑的遍历map吧
2、map本质上是有Entry<k,v>组成的,所以最直观的想法是通过Entry来循环遍历map,那么map有没有唁昼囫缍这个接口呢?当然有!map.entrySet();就能够放回一个entry的集合。看看具体用法吧: Set<Entry<String,String>>entrySet=map.entrySet(); for(Entry<String,String>entry:entrySet){ entry.getValue(); }这种用法更加方便快捷,效率上也更好。
3、接下来对两种方式做一个对比试验: Map<String,String>map=new HashMap<String, String>(); for(int i=0;i<10000000;i++){ map.put("a"+i, "b"+i); } Long a =System.currentTimeMillis(); Set<String>set=map.keySet(); for(String str:set){ map.get(str); } set=null; Long b=System.currentTimeMillis(); System.out.println(b+" b-a = "+(b-a)); Set<Entry<String,String>>entrySet=map.entrySet(); for(Entry<String,String>entry:entrySet){ entry.getValue(); } Long c=System.currentTimeMillis(); map=null; System.out.println(c+ " c-b = "+(c-b));对比结果如下图所示,通过第二种方式比第一种方式快15ms。
