java8中ForEach Method

在 jdk1.7 之前,我们去遍历一个 List 集合中的元素,我们可以这么做:

List<Integer> values = Arrays.asList(4,2,3);
    for (int i = 0; i < values.size(); i++){
        System.out.println(values.get(i));
    }
 
 
  • 1
  • 2
  • 3
  • 4

or 用一个增强的 forEach 循环:

for (int i: values) {
    System.out.println(i);
}
 
 
  • 1
  • 2
  • 3

结果都是 OK的,但是这种写法的效率其实会比较慢,这里提出一个概念叫做 external loops ,以上的两种写法都是属于 external loops。这个怎么理解呢,这样想,因为以上的两个 loop在 List 的外面,就是说从 List 的外面去 fetch这些 element,就像你有一个装有 elements 的 box ,你把手伸进这个 box,然后再去 fetch 这些 element 的意思。所以叫它 external loops .

但是在 jdk1.8里有一个 Internal loops 可以替代 上面的 External loops ,它是这样的:

List<Integer> values = Arrays.asList(4,2,3);
values.forEach(i -> System.out.println(i));
 // "->" 是一个 lambda expression,后面再说
 
 
  • 1
  • 2
  • 3

可以这么理解, 这里的 forEach是 List 的一部分,使用这个 API ,要比 external loops 要快很多,相当于直接在 box 里面去 fetch 这些 elements 。如果是在处理huge data的时候,就会表现出来。这是 jdk 1.8的新特性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值