一、 流的概念
1、什么是流(stream)
在Java 8 中,stream是新增的一大亮点,Stream 是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。它像是一种是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列,流本身不是一种数据结构,不能够存储数据,它只关注于数据内部的计算,在一定程度上类似于迭代器,单向运行,只能使用一次,但是与之不同的是Stream能够并行化操作。简单来说:集合专注于数据,而流专注于计算
2、Stream的操作步骤
(1)、创建Stream
一个数据源(如:集合、数组),获取一个流
(2)、中间操作
一个中间操作链,对数据源的数据进行处理
(3)、终止操作
一个终止操作,执行中间操作链,并产生结果。
二、创建Stream
创建Stream的方式有多种
1、collection接口提供
default Stream<E> stream() : 返回一个顺序流
default Stream<E> parallelStream() : 返回一个并行流
List<String> list = new ArrayList<>();
Stream<String> stream = list.stream(); //获取一个顺序流
Stream<String> parallelStream = list.parallelStream(); //获取一个并行流
2、通过Arrays中的静态方法stream()获取数组流
static <T> Stream<T> stream(T[] array)
Integer[] nums = new Integer[10];
Stream<Integer> stream1 = Arrays.stream(nums);
3、可以使用静态方法 Stream.of(), 通过显示值 创建一个流。它可以接收任意数量的参数
public static<T> Stream<T> of(T... values)
Stream<Integer> stream2 = Stream.of(1,2,3,4,5,6);
4、可以使用静态方法 Stream.iterate() 和 Stream.generate(), 创建无限流
迭代
public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f)
生成