Java8:Stream概念

参考:Java 8 Stream Tutorial

介绍:什么是流、管道/Pipelinin、惰性/ laziness、部分地构造、流的一次性

1.什么是流

流是支持对数据序列进行Map/Reduce操作的数据序列的提供者和通道

  • 流 Stream<T>是元素集合的描述,而非列举。因而流的元素可以无限。
  • 流 Stream<T>是惰性计算的链表,(高阶函数)filter, map, reduce, find, match, sort等操作,如果不考虑开销,也可以用在Collections上——换言之,这些函数不是什么了不起的东西,而是 Stream<T>的惰性计算,才是要点。
  • 流对象只能够被终结/terminal函数消费一次

 

正则表达式(Regular Expression)是一种生成字符串的字符串,例如

String regEx="ab*";

"ab*"——表示了a、ab、abb、abbb……。可以说,正则表达式"ab*"表示了一个无限的集合。

流 Stream<T>表示类型为T的元素的序列,支持对元素的顺序或并发的聚合操作。Java的Collections类似{a、ab、abb、abbb},而流类似"ab*"。

3.5.1  Streams Are Delayed Lists

为Java带来了函数式编程风格的,并非lambda表达式,而是Stream API 。正如SICP所展示的,(高阶函数)filter, map, reduce, find, match, sort等操作,可以建立在list之上(但是开销太大),只有拥有 delayed evaluation /延迟计算/惰性计算的Stream ,才能够发挥上面的高阶函数的威力。

 

Stream<T>的操作,通常形容为管道/Pipelining,其实,也可以把String的操作称为管道。

 

        List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1", "c0");
        myList.
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值