一、介绍
(1)Stream类用于对集合进行操作,能写出更加简洁、高效的代码。
(2)集合是面向内存(存储)的,Steam是面向CPU(计算)的。
(3)Stream类不会改变原数据,只是返回一个新的Stream。
二、创建Stream
(1)通过集合
public class LambdaTest {
public static void main(String[] args) {
List<String> list = new ArrayList();
Stream<String> stream = list.stream();
}
}
(2)通过数组工具类Arrays
public class LambdaTest {
public static void main(String[] args) {
Stream<String> stream = Arrays.stream(new String[]{"1", "2"});
}
}
(3)通过Stream的静态方法of
public class LambdaTest {
public static void main(String[] args) {
Stream<Integer> integerStream = Stream.of(1, 2, 3);
}
}
(4)通过Stream的静态方法iterate来创建无限流
public class LambdaTest {
public static void main(String[] args) {
//第一个参数为初始值
Stream<Integer> iterate = Stream.iterate(0, e -> e + 1);
}
}
(5)通过Stream的静态方法generate来创建无限流
public class LambdaTest {
public static void main(String[] args) {
Stream<Double> generate = Stream.generate(Math::random);
}
}
三、中间操作
四、终止操作
public class LambdaTest {
public static void main(String[] args) {
Stream<Double> generate = Stream.generate(Math::random);
List<Double> collect1 = generate.collect(Collectors.toList());
Set<Double> collect2 = generate.collect(Collectors.toSet());
}
}