加油,新时代打工人!
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快很多,偶尔两个持平。