0%

8.2.3 使用Lambda表达式遍历Iterator

8.2.3 使用Lambda表达式遍历Iterator

Java8Iterator新增了一个forEachRemaining(Consumer action)方法,该方法所需的参数Consumer是函数式接口。当程序调用IteratorforEachRemaining(Consumer action)遍历集合元素时,程序会依次将集合元素传给Consumeracept(T t)方法。

因为forEachRemaining()方法参数Consumer是函数式接口,所以可以传给该方法一个Lambda表达式作为参数。
也可以传入一个匿名内部类作为参数,不过lambda表达式比匿名内部类代码量比较少.

实例

如下程序示范了使用Lambda表达式来遍历集合元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
import java.util.function.Consumer;

public class IteratorEach {
public static void main(String[] args) {
// 创建集合、添加元素的代码与前一个程序相同
Collection<String> collection = new HashSet<String>();
collection.add("1");
collection.add("2");
collection.add("3");
// 获取books集合对应的迭代器
Iterator<String> iterator = collection.iterator();
// 使用Lambda表达式(目标类型是Comsumer)来遍历集合元素
iterator.forEachRemaining(str -> System.out.println("Lambda表达式迭代集合元素:" + str));
System.out.println("----------------------------");
// 重新获取迭代器
iterator = collection.iterator();
iterator.forEachRemaining(new Consumer<String>() {
@Override
public void accept(String str) {
System.out.println("匿名内部类迭代集合元素:" + str);
}
});
}
}
```

Lambda表达式迭代集合元素:1
Lambda表达式迭代集合元素:2
Lambda表达式迭代集合元素:3


匿名内部类迭代集合元素:1
匿名内部类迭代集合元素:2
匿名内部类迭代集合元素:3

```

原文链接: 8.2.3 使用Lambda表达式遍历Iterator