Java stream.map 和 stream.forEach 区别

map

 Stream map(Function mapper)

map 方法接收一个功能型接口,功能型接口接收一个参数,返回一个值。map 方法的用途是将旧数据转换后变为新数据,是一种 1:1 的映射,每个输入元素按照规则转换成另一个元素。该方法是 Intermediate 操作

Stream stream = Stream.of("a", "b", "c", "d");
stream.map(String::toUpperCase).forEach(System.out::println);

以上代码通过 map 方法,把 a, b, c, d 全部转变成大写,然后输出

forEach

void forEach(Consumer action)

forEach 接收一个 Consumer 接口,该接口我们之前讲 Function 包时已经提过了。它只接收不参数,没有返回值。然后在 Stream 的每一个元素上执行该表达式

范例:

Stream stream = Stream.of("I", "love", "you");
stream.forEach(System.out::println);

区别

生成一个新的对象的时候,使用 map 会更好;只是操作 list 内部的对象时,用 forEach

这段代码,是无效的(appList 不会变化):

appMemberList.stream().map(appMember -> appList.add(appMember.getApp()));

要改成 forEach 才行

appMemberList.stream().forEach(appMember -> appList.add(appMember.getApp()));

你可能感兴趣的:(Java stream.map 和 stream.forEach 区别)