- map()和lambda函数
List<xxx> xxxList = request.getzzzList().parallelStream().map(
yyyId -> { balabala}
).collect(Collectors.toList());
map() 方法是一个中间操作,它接收一个函数作为参数,并将这个函数应用于流中的每个元素,然后将函数的返回值组成一个新的流。这允许你对流中的元素进行转换或处理。
要使用map()方法,你需要有一个流(Stream)对象,并且你需要提供一个Lambda表达式或者方法引用来指定如何转换流中的每个元素。
Lambda表达式提供了一种更简洁的方式来实现只有一个抽象方法的接口(即函数式接口)的实例。Lambda表达式的基本语法如下:
(parameters) -> expression
或
(parameters) -> { statements; }
->:Lambda操作符,用于分隔参数列表和Lambda体。
expression:单个表达式,其计算结果将自动返回(对于返回类型为void的情况,Lambda体可以包含多条语句)。
{ statements; }:包含多条语句的Lambda体,必须使用花括号{}包围,并且如果Lambda体有返回值,则必须显式地使用return语句。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MapExample {
public static void main(String[] args) {
// 创建一个包含整数的List
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 使用map()方法将每个元素乘以2,并收集结果到一个新的List中
// 要使用map()方法,你需要有一个流(Stream)对象,并且你需要提供一个Lambda表达式或者方法引用来指定如何转换流中的每个元素。
List<Integer> doubledNumbers = numbers.stream().map(n -> n * 2) // 将每个元素乘以2
.collect(Collectors.toList()); // 收集结果到List
// 打印结果
System.out.println(doubledNumbers); // 输出: [2, 4, 6, 8, 10]
// 使用filter()筛选出偶数 (parameters) -> expression
List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
// 打印结果
System.out.println(evenNumbers); // 输出: [2, 4, 6, 8, 10]
// 使用forEach和Lambda表达式遍历列表 (parameters) -> { statements; }
numbers.forEach(n -> {
// 在这里,n是Lambda表达式的参数,代表列表中的当前元素
// statements是Lambda表达式的体,包含了对n的操作
System.out.println(n);
});
}
}