Java 8 Stream peek 与 map的区别

刚接触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参数λ表达式返回的类型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,456评论 19 139
  • 转自: Java 8 中的 Streams API 详解 为什么需要 Stream Stream 作为 Java ...
    普度众生的面瘫青年阅读 2,974评论 0 11
  • Stream是Java 8 提供的高效操作集合类(Collection)数据的API。 1. 从Iterator到...
    nkcoder阅读 5,740评论 2 24
  • Java流库(java.util.stream) 流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图...
    thorhill阅读 4,961评论 0 4
  • 密集的古镇村庄 包围蓝天翅膀的池塘 天的那边乌云密布 天的这边晴空万里 寻源去 有如桃花源记一般的闲情 又一场樱花...
    瞿静阅读 244评论 0 4

友情链接更多精彩内容