Java stream.map 和 stream.forEach

2018-09-02  本文已影响156人  杰哥长得帅

map

<R> Stream<R> map(Function<? super T, ? extends R> mapper)

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

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

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

forEach

void forEach(Consumer<? super T> action)

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

范例:

Stream<String> 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()));
上一篇下一篇

猜你喜欢

热点阅读