美文网首页
Java 8 Stream peek 与 map的区别

Java 8 Stream peek 与 map的区别

作者: 輕狂丨書生 | 来源:发表于2018-08-08 16:23 被阅读0次

刚接触java8 Stream的时候,经常会感觉分不清楚 peek 与 map方法的区别其实了解一下λ表达式就明白了

首先看定义

Stream<T> peek(Consumer<? super T> action);

peek方法接收一个Consumer的入参。了解λ表达式的应该明白 Consumer的实现类 应该只有一个方法,该方法返回类型为void。

Consumer<Integer> c =  i -> System.out.println("hello" + i);

而map方法的入参为 Function。

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

Function 的 λ表达式 可以这样写

Function<Integer,String> f = x -> {return  "hello" + i;};

我们发现Function 比 Consumer 多了一个 return。
这也就是peek 与 map的区别了。

总结:peek接收一个没有返回值的λ表达式,可以做一些输出,外部处理等。map接收一个有返回值的λ表达式,之后Stream的泛型类型将转换为map参数λ表达式返回的类型

相关文章

网友评论

      本文标题:Java 8 Stream peek 与 map的区别

      本文链接:https://www.haomeiwen.com/subject/ibdxbftx.html