java8中ForEach Method

来源:互联网 发布:知乎 wings颁奖 编辑:程序博客网 时间:2024/06/07 02:39

在 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的新特性。

原创粉丝点击