Stream虽然继承了AutoCloseable接口,但是不会自动close,除非在try-with-resource里面
每次中间操作都会返回一个新的stream
flatMap在执行一次之后会关闭stream
第一种:
List<String> collection = new ArrayList<>();
collection.stream();
第二种:
String[] array = {"1"};
Arrays.stream(array);
第三种:
Stream.of(new Object()); 对象
Stream.of(1 ,2 ,3); 可变参数
Stream.of(array); 数组
generate(Supplier<T> s)
iterate(起始值,Function<T> f)
Stream<String> echos = Stream.generate(() -> "echo");
Stream<Integer> integers = Stream.iterate(0, num -> num + 1);
但是这些都是中间操作,不会真的被执行,直到遇到终端操作
第一次不会执行,直接返回起始值,所以假设 .limit(10),其实只执行了9次
中间操作包括:filter skip limit map
- Collector 和 Collectors 区别
Collector: 是一个 interface
Collectors: 是一个final class,工具类,通过静态方法生成各种常用的 Collector
collect() 操作会把其接收的元素聚集(aggregate)到一起
方法引用类别 |
举例 |
引用静态方法 |
Integer::sum |
引用某个对象的实例方法 |
list::add |
引用特定类型任意对象的实例方法 |
String::length |
引用构造方法 |
HashMap::new |