Java8之流操作

java.util.stream.Stream中的Stream接口定义了许多操作。它们可分为两大类:

        List<Orange> list = Lists.newArrayList(new Orange(1.2, "红"), new Orange(2.3, "黄"), new Orange(3.2, "绿"),
                new Orange(0.2, "青"), new Orange(0.5, "蓝"));
        List<String> collect =
                list.stream().filter(orange -> orange.getWeight() > 1).sorted((orange1, orange2) -> orange2.getWeight() > orange1.getWeight() ? 0 : -1).map(Orange::getColor).limit(2).collect(Collectors.toList());
        log.debug(collect.toString());
        //输出:[绿, 黄]
  • 操作简介,流的使用一般包括
  1. 一个数据源来执行一个查询;
  2. 一个中间操作链,形成一条流的流水线;
  3. 一个终端操作,执行流水线并生成结果。
  • 中间操作:可以连接起来的流操作称作为中间操作。

    • 诸如collect操作前的filter或sorted等中间操作都会返回另外一个流。这让多个操作可以连接起来形成一个查询。重要的是,除非流水线上触发一个终端操作,否则中间操作不好执行任何处理。这是因为中间操作都可以合并起来,在终端操作时一次性全部处理。
    操作返回类型操作参数函数描述符解释
    filterStreamPredicateT -> boolean过滤数据源中的数据,满足条件的进入后面的流水线
    sortedStreamComparator(T, T) -> int对流中的数据进行排序,注意返回大于等于0的自然数表示此数据排在前面
    mapStreamFunction<T, R>T -> R将流中的数据类型转换成其它类型返回到流水线中
    limitStream取流中的几条数据,相当于Mysql中的limit
    distinctStream去重,相当于Mysql中的distinct
  • 终端操作:关闭流的操作称为终端操作。

    • 终端操作会从流的流水线生成结果,其结果是任何不适流的值。
    操作目的
    forEach消费流中的每个元素并对其应用Lambda。()-{},这一操作返回void
    count返回流中元素的个数。这一操作返回long
    collect把流归约成一个集合,List、Map、Set等

更多文章:
CSDN博客
简书博客
公众号:代码小搬运
代码小搬运.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值