Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同.
我们先来看看Java里面是怎么定义Stream的:
A sequence of elements supporting sequential and parallel aggregate operations.
我们来解读一下上面的那句话:
Stream是元素的集合,这点让Stream看起来用些类似Iterator;
可以支持顺序和并行的对原Stream进行汇聚的操作;
Stream
BaseStream的核心接口方法:
而Stream
表明Stream能够进行迭代操作
表明Stream能够进行分割迭代
判断Stream是否是并行的Stream
获取串行的Stream
获取并行的Stream
获取无序的Stream
返回一个同样的Stream,并同时执行一个Runnable
以下是Stream的的核心接口方法:
对Stream中的元素进行指定比较器进行排序
在Stream中过滤符合指定条件的元素
将Stream中的元素转换成另一种数据格式
将Stream中的元素转换成int类型的值
将Stream中的元素转换成long类型的值
将Stream中的元素转换成double类型的值
将stream中的元素转换成stream
将stream中的元素转换成int类型的stream
将stream中的元素转换成long类型的stream
将stream中的元素转换成double类型的stream
将Stream中重复的元素去除掉
对Stream中的元素进行排序
对Stream进行规约操作
对Stream中的元素都调用指定的方法,不影响原有元素内容
限制Stream的元素内容的大小
获取跳过指定长度的Stream
遍历处理Stream中的元素
按照顺序遍历处理Stream中的元素
将Stream转换成对象数组
将Stream 转换成指定对象的数组
对Stream进行规约操作
对Stream进行规约操作
BiFunction accumulator,
BinaryOperator combiner)
通过指定的比较器获取元素的最大值
BiConsumer
BiConsumer
通过指定的收集器,收集Stream的内容
通过指定的收集器,收集Stream的内容
通过指定的比较器获取元素的最小值
获取Stream的元素内容大小
【Stream详解】向一个Stream中添加元素
判断Stream中是否含有指定要求的元素
判断Stream中所有元素是否符合指定要求
判断Stream中所有元素是否都不符合指定要求
获取Stream中的第一个元素
随机获取Stream中的一个元素
获取一个Stream的构造器
获取一个空的Stream
连接两个Stream成一个Stream
向一个Stream中添加元素列表
迭代Stream
根据指定需求生成一个Stream
下面就通过具体实例来看每个方法的使用方式:
Person类:
filter(Predicate super T> predicate)
获取一批用户中年龄大于23的人数
System.out.println(
Arrays.asList(
new Person(22,"lisi"),
new Person(23,"zhangsan"),
new Person(25,"wangwu"),
new Person(24,"zhouliu"),
new Person(27,"zhaoqi")
).stream()
.filter(x -> x.age > 23)
.count()
);
结果为:
3