一、forEach方法
Java8引入了forEach方法,可以用来遍历集合中的元素。其实现如下:
list.forEach(element -> {
//对列表元素做一些操作
});
这个方法将会遍历列表中的所有元素,然后对每个元素执行指定的操作。下面是一个实例:
List<String> list = Arrays.asList("apple", "banana", "orange", "cherry");
list.forEach(fruit -> { System.out.println(fruit); });
这个例子中,我们定义了一个字符串列表,并使用forEach方法遍历每个元素并输出。output:
apple
banana
orange
cherry
二、map方法
Java8还引入了map方法。它可以用来遍历一组元素,并将它们转换为新元素的集合。其实现如下:
List<T> newList = oldList.stream().map(element -> {
//将每个元素从旧列表映射成新元素
}).collect(Collectors.toList());
在这个例子中,我们用流对旧列表进行处理,转换成一个新的列表。下面是一个使用了map方法的例子:
List<Integer> numberList = Arrays.asList(2, 3, 4, 5);
List<Integer> numberSquareList = numberList.stream().map(x -> x * x).collect(Collectors.toList());
numberSquareList.forEach(number -> { System.out.println(number); });
我们定义了一个整数列表,并使用map方法将每个元素平方后转化为新的整数列表。output:
4
9
16
25
三、filter方法
除了map方法以外,Java8还引入了另一个函数:filter函数。它可以用来从集合中过滤出符合条件的元素。其实现如下:
List<T> newList = oldList.stream().filter(element -> {
//用谓词函数过滤元素
}).collect(Collectors.toList());
其中过滤集合的谓词函数为一个返回boolean类型的函数。下面是一个使用filter方法的例子:
List<String> fruits = Arrays.asList("apple", "banana", "orange", "cherry");
List<String> filterFruits = fruits.stream().filter(fruit -> fruit.contains("a")).collect(Collectors.toList());
filterFruits.forEach(filterFruit -> { System.out.println(filterFruit); });
这个例子会将“含有字母a”的元素筛选出来。output:
apple
banana
orange
四、flatMap方法
flatMap方法也是Java8中的一种新方法。它可以用于多维集合,将其依照指定格式输出。其实现如下:
List<R> newList = oldList.stream().flatMap(element -> {
//将每个元素从旧列表映射成一个新的流
}).collect(Collectors.toList());
下面是一个使用flatMap方法的例子:
List<List<String>> list = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d")
);
List<String> flatList = list.stream().flatMap(innerList -> innerList.stream()).collect(Collectors.toList());
flatList.forEach(flatString -> { System.out.println(flatString); });
这个例子中,我们定义了一个多级列表。flatMap方法将每个元素从旧列表中映射为一个新的列表。
五、reduce方法
reduce方法还是Java8中的一种新方法,它可以将多个元素结合为一个元素。其实现如下:
R result = list.stream().reduce(initialValue, (a, b) -> {
//用二元运算符操作两个元素
});
在这个例子中,reduce是把列表中的所有元素合并成一个值。下面是reduce方法的代码实现:
List<Integer> numbers = Arrays.asList(5, 10, 15);
int sum = numbers.stream().reduce(0, (a, b) -> a + b);
System.out.println("Sum: " + sum);
在这个例子中,我们定义了一个整数列表,并使用reduce方法将所有元素累加求和。output:
Sum: 30
六、总结
无论是forEach、map、filter、flatMap还是reduce方法,都是Java8中非常有用的函数。它们为开发人员提供了一个非常方便的方法,使得操作集合变得更加简单和高效。