我怎样才能重用java8(也许是一个memoization过程)值已通过流迭代计算?Java8流与记忆
如果流被复制或再次提供,它将被重新计算。在某些情况下,最好为该CPU时间交易内存。从一开始收集所有内容可能不是一个好主意,因为该流用于查找满足谓词的第一个项目。
Stream<Integer> all = Stream.of(1,2,3,4,5, ...<many other values>...).
map(x->veryLongTimeToComputeFunction(x));
System.out.println("fast find of 2"+all.filter(x->x>1).findFirst());
//both of these two lines generate a "java.lang.IllegalStateException: stream has already been operated upon or closed"
System.out.println("no find"+all.filter(x->x>10).findFirst());
System.out.println("find again"+all.filter(x->x>4).findFirst());
的问题是呈三角Copy a stream to avoid "stream has already been operated upon or closed" (java 8)
但是,这将执行veryLongTimeToComputeFunction所有字段只是在最后保持第一个。 – raisercostin