zoukankan      html  css  js  c++  java
  • Java – Stream has already been operated upon or closed

    Java – Stream has already been operated upon or closed

    package com.mkyong.java8;

    import java.util.Arrays;
    import java.util.stream.Stream;

    public class TestJava8 {

    public static void main(String[] args) {

    String[] array = {"a", "b", "c", "d", "e"};
    Stream<String> stream = Arrays.stream(array);

    // loop a stream
    stream.forEach(x -> System.out.println(x));

    // reuse it to filter again! throws IllegalStateException
    long count = stream.filter(x -> "b".equals(x)).count();
    System.out.println(count);

    }

    }

    Output

    java.lang.IllegalStateException: stream has already been operated upon or closed
    at java.util.stream.AbstractPipeline.(AbstractPipeline.java:203)
    at java.util.stream.ReferencePipeline.(ReferencePipeline.java:94)
    at java.util.stream.ReferencePipeline$StatelessOp.(ReferencePipeline.java:618)
    at java.util.stream.ReferencePipeline$2.(ReferencePipeline.java:163)
    at java.util.stream.ReferencePipeline.filter(ReferencePipeline.java:162)
    at com.hostingcompass.whois.range.run.TestJava8.main(TestJava8.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

    2. Example – Reuse a stream
    package com.mkyong.java8;

    import java.util.function.Supplier;
    import java.util.stream.Stream;

    public class TestJava8 {

    public static void main(String[] args) {

    String[] array = {"a", "b", "c", "d", "e"};

    Supplier<Stream<String>> streamSupplier = () -> Stream.of(array);

    //get new stream
    streamSupplier.get().forEach(x -> System.out.println(x));

    //get another new stream
    long count = streamSupplier.get().filter(x -> "b".equals(x)).count();
    System.out.println(count);

    }

    }
    Output

    a
    b
    c
    d
    e
    1

    http://www.mkyong.com/java8/java-stream-has-already-been-operated-upon-or-closed/

  • 相关阅读:
    JS内置对象-Array之splice-删插替
    for-in的缺点
    Obeject.hasOwnProperty
    JS中的深拷贝和浅拷贝
    函数中this的指向
    CSS预处理器之less和sass
    [转]javaweb学习总结(四十四)——监听器(Listener)学习
    [转]javaweb学习总结(四十三)——Filter高级开发
    [转]javaweb学习总结(四十二)——Filter(过滤器)学习
    [转]javaweb学习总结(四十一)——Apache的DBUtils框架学习
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/10020321.html
Copyright © 2011-2022 走看看