Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进⾏的操作,可以执⾏⾮常复杂的查找、过滤和映射数据
等操作。使⽤Stream API 对集合数据进⾏操作,就类似于使⽤ SQL 执⾏的数据库查询。也可以使⽤ Stream API 来并⾏执⾏操作。简⽽
⾔之,Stream API 提供了⼀种⾼效且易于使⽤的处理数据的⽅式。
Stream的一些特点:
1 . 不是数据结构,不会保存数据。
2. 不会修改原来的数据源,它会将操作后的数据保存到另外⼀个对象中。(保留意见:毕竟peek⽅法可以修改流中元素)
3. 惰性求值,流在中间处理过程中,只是对操作进⾏了记录,并不会⽴即执⾏,需要等到执⾏终⽌操作的时候才会进⾏实际的计算。
一丶创建Stream流方式一: 通过集合
//创建一个集合
List<Employee> list = EmployeeData.getEmployees();
//得到一个顺序流
Stream<Employee> stream = list.stream();
//得到一个并行了流
Stream<Employee> stream2 = list.parallelStream();
二丶创建Stream流方式二: 通过数组
//先创建一个数组
int[] arr = new int[]{1, 2, 3, 4, 5, 6};
//使用数组Arrays工具类获取Stream流
IntStream stream = Arrays.stream(arr);
二丶创建Stream流方式三: 通过stream流的of( )方法
Stream<Integer> stream = Stream.of(1,2,3,4,5,6);
四丶创建Stream流方式四: 创建无限流
//无限流之迭代方式
//创建了10个元素从0到18
Stream<Integer> s = Stream.iterate(0, t -> t + 2).limit(10);
//无限流之生成方式
//创建了10个随机数
Stream<Double> s2 = Stream.generate(Math::random).limit(10);