import java.util.ArrayList;
import java.util.Comparator;
import java.util.Optional;
import java.util.stream.Stream;
public class Huluxia{
public static void main(String[] args) throws Exception{
/**
* 流式操作
* 1.什么是Stream
* Stream是数据渠道 用于操作各种数据源所生成的元素序列 它可以实现对集合的复杂操作
* Stream是用于计算的 通过cpu实现计算
* Stream自己不会存储数据 Stream不会改变源对象 而是返回一个新的持有结果的Stream(不可变性)
* Stream操作是延迟执行的
* 流式操作的执行流程
* 创建Stream-中间操作-终止操作
*/
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
list.add("g");
list.add("h");
// Stream的创建
// 通过集合获取串行Stream对象
Stream stream = list.stream();
// 通过集合获取并行Stream对象
Stream stringStream = list.parallelStream();
// 它们的区别是 串行流从集合中取数据是按照集合的顺序的
// 并行流是并行操作的 获取的数据是无序的
// 通过Stream的of方法创建Stream对象 注意这里的参数是一个泛型 可以接收任意类型
Stream a = Stream.of("a");
// 创建无限流 可以使用iterate和generate创建无限流 了解即可
// filter 接收lambda 从流中清除某些元素
Stream stringStream1 = stream.filter(String -> list.size() > 4)
// 筛选 通过流生成元素的hashCode和equals方法去除重复元素
.distinct()
// 截断流 使其元素不超过给定数量
.limit(3)
// 跳过元素 返回一个前n个元素的流 若流中元素不足n个 则返回一个空流
.skip(1);
// 触发终止操作才能执行中间操作 遍历列表并打印
stringStream1.forEach(System.out::println);



吾已练气圆满
只待突破筑基
突破筑基有三法
普通筑基
地道筑基
天道筑基
吾自知天赋有限
只能无奈普通筑基
有天赋者可天道筑基
日后成就大道
举报 0