加油,新时代打工人!
1、java中List集合三种获取集合元素方式
2、Java中Map使用增强for循环和迭代器获取key和value
选择合适的循环方式,让性能最优!
public class Test2 {public static void main(String[] args) {//初始化 10w数据Map<Integer,Integer> map = new HashMap<>();for (int i = 0; i < 100000; i++) {map.put(i,i);}//增强for循环,keySet迭代long start = System.currentTimeMillis();for (Integer key : map.keySet()){map.get(key);}long end = System.currentTimeMillis();out.println("增强for循环,keySet迭代 ->" + (end - start) + "ms");//普通for循环 需要循环一次获取key,循环10w次,才能获取完结果
/* for (int j = 0; j <100000 ; j++) {final Set<Integer> key = map.keySet();map.get(key);}out.println("普通for循环 ->" + (end - start) + "ms");*/start = System.currentTimeMillis();for(Map.Entry<Integer,Integer> entry : map.entrySet()){entry.getKey();entry.getValue();}end = System.currentTimeMillis();out.println("增强for循环,entrySet迭代 ->" + (end - start) + "ms");start = System.currentTimeMillis();Iterator<Integer> iterator = map.keySet().iterator();Integer key;while (iterator.hasNext()){key = iterator.next();map.get(key);}end = System.currentTimeMillis();out.println("迭代器,keyset迭代 -> " + (end - start) + "ms");start = System.currentTimeMillis();Iterator<Map.Entry<Integer,Integer>> iterator1 = map.entrySet().iterator();Map.Entry<Integer,Integer> entry;while (iterator1.hasNext()){entry = iterator1.next();entry.getKey();entry.getValue();}end = System.currentTimeMillis();out.println("迭代器,entryset -> " + (end - start) + "ms");}
第一次运行
第二次运行
第三次运行
总结
1、增强for循环使用方便,但性能较差,不适合处理超大量级的数据。
2、迭代器的keySet遍历速度要比增强for循环快很多,是增强for循环的2倍左右。
3、使用entrySet遍历的速度要比keySet快很多,偶尔两个持平。