Java

BaseStream文档

2019-01-29  本文已影响39人  shz_Minato

一、概述

 BaseStream接口是Stream的基接口,支持串行和并行的聚合操作。该接口任然是AutoCloseable的子接口,支持了自动关闭流的功能。其接口声明如下:

public interface BaseStream<T, S extends BaseStream<T, S>> extends AutoCloseable

泛型含义:
    T 是流中元素的类型
    S 是BaseStream的实现

以Stream流为例
public interface Stream<T> extends BaseStream<T, Stream<T>>
Stream是BaseStream的子接口,其泛型是T和Stream<T>

父接口的S就是此处的Stream<T>

代码说明
interface Base<T, S extends Base<T, S>> {
    //返回泛型S的实例
    S getS();
}

interface Single<T> extends Base<T,Single<T>>{
}

class MyTest{
    public static void main(String[] args) {
        //String就是上述的泛型T
        Single<String> stringSingle=new Single<String>() {
            @Override
            public Single<String> getS() {
                //此处返回的就是Single<String>
                return null;
            }
        };
    }
}

综上 T就是流中元素(String)
     S就是流,流中的元素任然是T(Single<String>)
     以上设计保证了流的中间操作返回的流的元素一致性
     

二、方法说明

 Iterator<T> iterator()
  该方法返回流中元素的迭代器,泛型就是T(流中元素的类型)

 Spliterator<T> spliterator()
  该方法返回流中元素的分割迭代器,泛型就是T(流中元素的类型)

 boolean isParallel()
  该方法返回流是否是并行流(流中元素的类型),必须在终止操作之前调用此方法,否则会造成超出预期的结果。

 S sequential()
  该方法返回的是S,上述解释S就是一个新的Stream,新Stream的元素仍然是T,如果已经是串行的流调用此方法则返回本身。

 S parallel()
  同上述方法一致,此方法返回的流是并行流。

 S unordered()
  该方法返回的是S,上述解释S就是一个新的Stream,新Stream的元素仍然是T。新流是无序的,如果旧流本身是无序的或者已经设置为无序,则新流就是旧流本身。

 S onClose(Runnable closeHandler)
  该方法返回的是S,上述解释S就是一个新的Stream,新Stream的元素仍然是T。当close方法调用时,参数中的closeHandler才会执行,并且执行的顺序是添加的顺序。及时先添加的closeHandler抛出了异常,后续的closeHandler任会执行。第一个异常会传递到调用者处,后续的异常则是一起汇聚为suppressed exceptions。


 void close()
  关闭流,会导致上述方法中所有的closeHandler调用。

上一篇下一篇

猜你喜欢

热点阅读