JDK8新特性,手撕StreamAPI,吃我一波

Stream流

Stream流操作本身不是一个集合对象,它只是用来操作集合的一种方式,可以实现,生成,过滤等操作,Stream不会改变数据源,相反它会返回一持有新Stream的对象

创建流的四种方式

1.通过集合
这里说明一下什么是顺序流,什么是并行流,

顺序流在操作集合的时候,是逐一过滤,分组,类似于我们的for循环,
并行流在操作集合时候,则是多线程执行,同时操作集合,通过并行流获得的数据可能会打乱原来的顺序.

在这里插入图片描述
2.通过数组
在这里插入图片描述
3.通过自身
在这里插入图片描述
4.创建无限流
在这里插入图片描述

Stream流的中间操作

多个中间操作可以连接起来(每次中间操作都会返回Stream,可以让其调用下一个中间操作),这些中间操作像流水线一样,不过只有在触发流的终止操作的时候,这些连在一起的中间操作才会执行,否则这些中间操作不会执行,这种求知方式也被称为**“惰性求值”**.

筛选和切片:

filter()  ----  接受一个lambda表达式 执行过滤操作
distinct()    -------筛选,通过流所产生的元素的hashCode()和 equals()去除重复元素
limit(long maxSize)  -------- 截断流,使其元素不超过给定数量
skip(long  n )    -------- 跳过元素,返回一个扔掉了前N个元素的流,若流中元素不足N个
							,则返回一个空流,与limit(n)互补

映射

map(Function F)   ----  接受一个函数作为参数,该函数会被应用到每一元素上,并将其映射成一个新的元素
flatMap(Function F)    ----  接收一个函数作为参数,并把六中的每一个值都替换成另一个流,然后合并成一个流

排序

sorted()   -----  产生一个新流,其中按照自然排序排序(comparable)
sorted(comparator  com)      ------   产生一个新流,其中按照比较强顺序排序

Stream流的终止操作

匹配
在这里插入图片描述
归约

在这里插入图片描述
收集
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值