码迷,mamicode.com
首页 > 编程语言 > 详细

Java8 forEach

时间:2017-10-29 12:54:57      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:new   定义   key   性能   map   val   lam   取值   循环   

  这几天学了下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

标签:new   定义   key   性能   map   val   lam   取值   循环   

原文地址:http://www.cnblogs.com/nost/p/7749474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!