我想实施一个Stream<T>
.
我不想只使用implements Stream<T>
,因为我必须实现大量方法。
这可以避免吗?
更具体地说,我如何直播t1
, t2
and t3
例如:
class Foo<T> {
T t1, t2, t3;
Foo(T t1, T t2, T t3) {
this.t1 = t1;
this.t2 = t2;
this.t3 = t3;
}
}
JDK的标准实现Stream
是内部类java.util.stream.ReferencePipeline
,你不能直接实例化它。
Instead you can use java.util.stream.Stream.builder()
, java.util.stream.StreamSupport.stream(Spliterator<T>, boolean)
and various1 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#of-T...-, 2 https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#StreamSources other static factory methods to create an instance of the default implementation.
使用 spliterator 可能是最强大的方法,因为它允许您惰性地提供对象,同时如果您的源可以分为多个块,还可以实现高效的并行化。
此外,您还可以将流转换回分割器,将它们包装在自定义分割器中,然后如果您需要实现自己的分割器,则将它们转换回流有状态中间操作- 例如由于标准 API 的缺陷 - 因为大多数可用的中间操作不允许有状态 https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#Statelessness.
See 这个答案 https://stackoverflow.com/a/28363324/1362755举个例子。
原则上,您可以编写自己的流接口实现,但这将非常乏味。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)