[Java]“语法糖”系列(三)之集合流操作(Stream)[笔记]

本文主要介绍了Java 8中的集合流操作,包括流的概念、流操作的分类(转换操作和终点操作)、常用转换操作(如map、filter)和终点操作(如forEach、collect)。文章强调了转换操作的惰性化特性,并详细解释了collect方法的作用以及短路操作的应用。此外,还讨论了flatMap接口如何将不同数据集拍平,以实现不同类型数据源的整合。
摘要由CSDN通过智能技术生成

>集合流操作

    这里的这个流和IO流不一样,是JDK8中对Collection对象功能的加强。

    个人认为作为基础,IBM上的>这篇文章<写得已经很好了,已然再无他文可出其右。这里只做一个要点笔记。


>流操作

    流操作分为两类:

  • Intermediate(转换操作):一个流可以后面跟随零个或多个 intermediate 操作。其目的主要是打开流,做出某种程度的数据映射/过滤,然后返回一个新的流,交给下一个操作使用。这类操作都是惰性化的(lazy),就是说,仅仅调用到这类方法,并没有真正开始流的遍历。
  • Terminal(终点操作):一个流只能有一个 terminal 操作,当这个操作执行后,流就被使用“光”了,无法再被操作。所以这必定是流的最后一个操作。Terminal 操作的执行,才会真正开始流的遍历,并且会生成一个结果,或者一个 side effect。

    所有的转换操作都是lazy的,lazy是指多次转换操作只会在遇到终点操作之后,才会依次执行。在终点操作之后,流截止,不再允许更多操作。比如:

List<Integer> nums = Arrays.asList(1, 2, 3);
nums.stream().peek(System.out::println).map(x->x*-1).forEach(System.out::println);
    输出为: 1 -1 2 -2 3 -3。


>流操作分类

  • 【数据集合】 ->【数据源】 - >  若干次(包括0)【转换操作】 ->【终点操作】。

     >这篇文章<把常用操作都用图表示出来了,值得记录一下。


     转换操作:map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 par

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值