首页 > 其他分享 >流库stream

流库stream

时间:2022-11-09 13:59:35浏览次数:37  
标签:stream Stream 对象 元素 流库 类型 操作 Optional

流Stream

用来以“做什么而非怎么做”的方式来处理集合

  • 流并不存储元素,,这些元素可能存储在底层的集合中,或者是按需生成的。存储的是规则
  • 流的操作不会修改其数据源,会生成新的流
  • 流的操作时尽可能惰性执行的,知道需要结果时,操作才会执行,可以操作无限流
  • 执行流的操作时不能修改背后的集合

创建流

有很多方法创建流

转换流

流的转换会产生一个新的流,它的元素来自前一个流中的元素。

filter、map、flatMap

抽取子流和组合流

其他流转换

约简操作(终结操作)

约简就是将流变成程序中使用的非流值。

Optional类型

Optional对象是一种包装器对象,要么包装了类型T的对象,要么没有包装任何对象。

  • 获取Optional的值
  • 消费Optional的值
  • 管道化Optional

不适合使用Optional值的方式

  • optional类型变量永远不应该为null
    Stream.empty().findAny();会出现空指针异常
  • 不要使用Optional类习惯的域(不要声明为属性和方法参数),因为其代价时额外多出来一个对象。在类的内部,使用null表示缺失的域更易于操作
  • 不要在集合中防止optional对象,并且不要将它们用作map的key。

创建Optional的值


收集结果



收集到映射表中

分组和分区

下游收集器

groupingBy方法会产生一个映射表,它的每个值都是一个列表,如果想要以某种方式来处理这些列表,就需要提供一个下游收集器。

reduce

基本类型流

八大基本类型对应的有三种基本类型流

  • IntStream

  • LongStream

  • DoubleStream

  • 一些可以返回基本类型流的类

并行流

注意点:

  • 确保传递给并行流的任何函数操作都是安全的
  • 如果对顺序没有要求,可以通过Stream.unordered()方法放弃排序,
  • Stream.distinct方法会保留相同元素中的第一个,如果放弃排序后再执行,就会变成保留相同元素中的任意一个,这样可以提高并行效率
  • limit方法类似,放弃排序后变成从流中取出任意的n个元素



标签:stream,Stream,对象,元素,流库,类型,操作,Optional
From: https://www.cnblogs.com/studyhaha/p/16869973.html

相关文章

  • parallelStream并发流线程安全问题
    parallelStream并发流线程安全问题起因公司项目中用到定时任务进行数据获取任务,由于返回数据的类型是字符串,需要进行转换,变为我们定义的类型id,在准备我们定义的类型Ma......
  • Stream流---根据对象中的某个属性值实现去重
    User类packagecom.gao.JDK8.Stream流;importlombok.Data;importjava.util.Date;@DatapublicclassUser{privateStringname;privateStringpas......
  • 数组~Count digits from a text stream
    题目描述Countdigits,whitespaces(‘’,’\n’,’\t’)andothercharactersfromatextstreamendingwithEOF.输入AtextstreamendingwithEOF输出Pr......
  • Streamlit 简介
    Streamlit是第一个专门针对机器学习和数据科学团队的应用开发框架,它是开发自定义机器学习工具的最快的方法,你可以认为它的目标是取代Flask在机器学习项目中的地位,可以帮助......
  • CentOS Stream 安装 Nacos
    版本LinuxCentOSStreamrelease8Nacos2.0.3MySQL8.0.29Step1:下载并解压unzipnacos-server-$version.zip#或者tar-zxvfnacos-server-$ve......
  • VMware 16 安装 CentOS Stream
    环境版本Windows10VMwareWorkstation16ProCentOS8-stream下载CentOS8stream安装包点击阿里云开源镜像站或网易开源镜像站,选择要下载的版......
  • 006 Rust 异步编程,Stream 介绍
    Stream介绍​​Stream​​​和​​Future​​​类似,但是​​Future​​​对应的是一个​​item​​​的状态的变化,而​​Stream​​​则是类似于​​iterator​​​,在结束......
  • java--Stream流基础
    Stream流操作方法执行完此方法之后,Stream流依然可以继续执行其他操作Stream流的思想 Stream流的三类方法  获取Stream流    好比创建一条流水线,并把数据放......
  • 微服务Spring Boot 整合Redis 基于Redis的Stream 消息队列 实现异步秒杀下单
    文章目录​​一、什么是Redis消息队列?​​​​二、Redis消息队列--基于RedisList实现消息队列​​​​三、Redis消息队列--基于Pubsub的消息队列​​​​四、......
  • Java 多线程写zip文件遇到的错误 write beyond end of stream!
    最近在写一个大量小文件直接压缩到一个zip的需求,由于zip中的entry每一个都是独立的,不需要追加写入,也就是一个entry文件,写一个内容,因此直接使用了多线程来处理,结果就翻......