首页 > 其他分享 >stream流的认识

stream流的认识

时间:2023-03-24 14:37:00浏览次数:43  
标签:返回 stream Stream 认识 元素 list add

一、什么叫流

  • Stream流只会对流数据进行处理并不会保存。流不存储元素。它只是通过计算操作管道(或者从计算机的消息队列中)从数据结构、数组或 I/O 通道等源传输元素。

  • Stream流只会接收数据进行处理,并不会改变源数据。流本质上是功能性的

  • Stream流并不会主动去寻找数据,如果没有数据流他就停在那里等待,我们叫他惰性,仅在需要时对流进行计算。流是惰性的

  • Stream流也支持并行处理,如果需要的话,Stream流可以充分利用计算机资源并行处理这段数据。流具有并行处理的能力

  • Stream流只是一次性的,就像迭代器一样,当对流的处理结束,他将不能再执行一遍。在流的生命周期中,流的元素仅访问一次。

二、流的目的

用于简化集合和数组的操作。

三、流的使用

List<String> list = new ArrayList<>();
list.add("张三");
list.add("张三丰");
list.add("柳岩");
list.add("林青霞");
list.add("张曼玉");
//普通写法
//找出“张”开头的人物
list.stream().filter(new Predicate<String>() {
	@Override
	public boolean test(String s) {
		return s.startsWith("张");
	}
}).forEach(s -> System.out.println(s));
//简化写法
//找出“张”开头的人物,并且长度为3的人物
list.stream().filter(s->s.startsWith("a")).filter(s->s.length()==3).forEach(System.out::println);

1. 流的使用流程

数据源(source) -> 数据处理 / 转换(intermedia) -> 结果处理(terminal)

2. Stream的核心思想:

  1. 先得到集合或者数组的Stream流对象。
  2. 把元素放进去
  3. 然后用Stream流简化的API来操作元素

四、流的常用方法

1. 获取Stream流

如果是数组的话,可以使用 Arrays.stream() 或者 Stream.of() 创建流;如果是集合的话,可以直接使用 stream() 方法创建流,因为该方法已经添加到 Collection 接口中。

  • Collection接口中的方法
方法 说明
default Stream stream() 返回以此集合为源的顺序 Stream
  • 通过数组获取方式,使用Arrays工具类中提供的方法
方法 说明
public static Stream stream(T[] array) 返回以指定数组作为源的顺序 Stream
public static Stream stream(T[] array, int startInclusive, int endExclusive) 返回以指定数组,指定索引范围作为源的顺序 Stream
static Stream of​(T t) 返回包含单个元素的Stream
static Stream of​(T... values) 返回其元素为指定值的顺序Stream

2. 操作流

方法 说明
Stream filter(Predicate<? super T> predicate) 返回由与此给定谓词匹配的此流的元素组成的流
Stream limit(long maxSize) 返回由此流的元素组成的流,截断长度不超 过 maxSize
Stream skip(long n) 在丢弃流的第一个 n 元素后,返回由此流 的其余元素组成的流
Stream distinct() 返回由此流的不同元素(根据 Object.equals(Object) )组成的流
static Stream concat(Stream<? extends T> a, Stream<? extends T> b) 创建一个延迟连接的流,其元素是第一个流 的所有元素,后跟第二个流的所有元素

3. 终结方法

方法 说明
void forEach(Consumer<? super T> action) 对此流的每个元素执行操作
long count() 返回此流中元素的数量

标签:返回,stream,Stream,认识,元素,list,add
From: https://www.cnblogs.com/asdfghqwe/p/17251450.html

相关文章

  • 对系统理论的认识
    1.系统理论是研究系统的一般模式,它研究各种系统的共同特征。2.系统论认为,整体性,关联性,等级结构性,动态平衡性,时序性等是所有系统的共同的基本特征。3.系统理论是一个元学......
  • 对系统理论的认识
    系统定义为:由若干要素以一定结构形式联结构成的具有某种功能的有机整体。在这个定义中包括了系统、要素、结构、功能四个概念,表明了要素与要素、要素与系统、系统与环境三......
  • 系统理论的认识
    系统理论属于钱学森院士倡立的系统科学,是研究系统的一般模式,结构和规律的学问,它研究各种系统的共同特征,用系统理论知识定量地描述其功能,寻求并确立适用于一切系统的原理、......
  • 使用 stream 从 List 对象中获取某列数据
    使用stream从List对象中获取某列数据原文链接:https://blog.csdn.net/easysec/article/details/119813487    在JDK8中增加了stream的特性,使用非常的方......
  • 认识yaml文件
    认识yaml文件yaml文件语法大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可#表示注释,......
  • Java stream 流
    Javastream流中间操作1、filter作用:将流中的元素,基于自定义的比较器进行去重方法定义Stream<T>filter(Predicate<?superT>predicate);说明:这个方法,传入一个Pr......
  • springcloud Stream整合rabbitmq消息驱动生产者踩坑
    消息驱动之生产者8801(踩坑记录)1.首先说一下情况,我是跟着尚硅谷周阳老师的springcloud2020教程学习的,前面也踩了不少坑,但是这个坑,是我找的比较久的坑了,所以希望大家能直......
  • stream流根据集合某个字段去重
    //stream流根据集合某个字段去重,流.filter(distinctByKey)点击查看代码定义方法publicstatic<T>Predicate<T>distinctByKey(Function<?superT,?>keyExtra......
  • Stream流方法的一些简单练习题
    Stream流练习题1、数据过滤定义一个集合,并添加一些整数1,2,3,4,5,6,7,8,9,10过滤奇数,只留下偶数并将结果保存起来。/***@author戒爱学Java*@date2023/3/239:......
  • Stream流
    Stream流Stream流的作用:结合了Lambda表达式,简化集合、数组的操作Stream流的使用步骤以及方法详解:先得到一条Stream流(流水线),并把数据放上去。/* 单列集合*/ Arr......