HashMap遍历方式探究
HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:
package com.HashMap.Test; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry;
public class HashMapTest { public static void main(String[] args) { HashMap<Integer, Integer> hm = new HashMap<>(); for(int i=0;i<10000000;i++){ hm.put(i, i); } //方式1: long currentTimeMillisStart = System.currentTimeMillis(); Iterator<Entry<Integer, Integer>> iterator = hm.entrySet().iterator(); while(iterator.hasNext()){ Entry<Integer, Integer> next = iterator.next(); //System.out.println("key: "+next.getKey()+" value: "+next.getValue()); } long currentTimeMillisEnd =System.currentTimeMillis(); System.out.println("Time: " + (currentTimeMillisEnd-currentTimeMillisStart)); //方式2 long currentTimeMillisStart2 = System.currentTimeMillis(); Iterator<Integer> iterator2 = hm.keySet().iterator(); while(iterator2.hasNext()){ Integer next = iterator2.next(); //System.out.println("key: "+ next+" value: "+hm.get(next)); } long currentTimeMillisEnd2 =System.currentTimeMillis(); System.out.println("Time: " + (currentTimeMillisEnd2-currentTimeMillisStart2)); } }
对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中。
Time: 58
Time: 78
欢迎关注微信公众号:大数据从业者