Stream
01、简介
对原来的数据源,经过一系列的中间操作 , 产生一个新的流
流讲的是计算
注意
1.不直接存储元素
2.不改变原来的数据源,经过操作会创建一个新的流
3.操作时延迟执行的
02、操作步骤
2.1 创建流
- 开以通过Collection系列集合提供的stream()方法或parallelStream()
- 通过Arrays中的静态方法stream()获取数组流
int[] baseCosts = new int[1024];
IntStream stream = Arrays.stream(baseCosts);
注意:
对于int、long和double类型的数组,返回的stream也是对应类型的stream
- 通过Stream类中的静态方法of(),参数可以使用数组或者多个同类型的参数
- 创建无限流
//迭代
Stream.iterate(i,()->{
});//参数1:起始位置,参数2:lambda表达式
//生成
Stream.generate(()->{
});//
2.2 中间操作
注意:中间操作不会被执行,只有当终止操作的时候,中间操作才会被执行
内部迭代:迭代操作,有Stream API完成
外部迭代:迭代元素,可以通过迭代器或者循环完成
- 筛选与切片
- filter(过滤):接受Lambda,从流中排除某些元素
- limit(分页):截断流,使其元素不超过给定数量
- skip():跳过元素,从第n个元素后面开始取。如果流中元素不足n个,返回一个空流。与limit(n)互补
- distinct:通过流所生成元素的hashCode()和equals()方法去除重复元素