美文网首页Java
BaseStream文档

BaseStream文档

作者: shz_Minato | 来源:发表于2019-01-29 11:44 被阅读39次

    一、概述

     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调用。

    相关文章

      网友评论

        本文标题:BaseStream文档

        本文链接:https://www.haomeiwen.com/subject/kkfxsqtx.html