Java Stream

Stream虽然继承了AutoCloseable接口,但是不会自动close,除非在try-with-resource里面
  • Stream
每次中间操作都会返回一个新的stream
flatMap在执行一次之后会关闭stream
  • 将其他类型转换成stream流
第一种:
List collection = new ArrayList<>();
collection.stream();

第二种:
String[] array = {"1"};
Arrays.stream(array);  
       
第三种:        
Stream.of(new Object());  对象
Stream.of(1 ,2 ,3);  可变参数
Stream.of(array);  数组
  • 创建无穷Stream
generate(Supplier s)
iterate(起始值,Function f)
Stream echos = Stream.generate(() -> "echo");
Stream 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

你可能感兴趣的:(Java Stream)