Java8 forEach
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8 forEach相关的知识,希望对你有一定的参考价值。
这几天学了下java8的新特性,java8最显著的改变之一就是加入lambda表达式,这个以后再说。
定义少量的数据 对少量的数据进行遍历
Map<String,Integer> map = new HashMap<>(16);
map.put("a",10);
map.put("b",20);
map.put("c",30);
map.put("d",40);
map.put("e",50);
//通常方法1 foreach entrySet遍历 entry是map里面定义的一个接口
for (Map.Entry<String,Integer> entry:map.entrySet()){
}
//通常方法2 Iterator接口遍历
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String,Integer> entry = iterator.next();
}
//通常方法3 遍历keySet 通过key 取值
for (String key : map.keySet()){
Integer value = map.get(key);
}
//java8 foreach+lambda表达式遍历
map.forEach((k,v)-> {
});
通过两个nanoTime相减 再除以1000 获得各个方式的遍历时间
forEach遍历时间:50
iterator遍历时间:5
遍历key再取值 遍历时间:230
java8 forEach遍历时间:84222
其中 iterator时间是最短的,forEach 实际上就是iterator的语意简化版 比iterator长一点,而遍历key再取值,相较于直接获得entry多了从hashmap 取出key所对应的value值,
而java8 forEach比其他两个方式耗时长了很多,所以如果系统的性能需求比较高的话,对集合循环的遍历,慎用forEach。
以上是关于Java8 forEach的主要内容,如果未能解决你的问题,请参考以下文章
在Java8中foreach()不能break,如果需要continue时,怎么办