目前我们Stream.concat
在 Java 8 中有以下内容:
public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b);
我很惊讶为什么没有版本采用可变参数Stream<? extends T>
?
目前我的代码编写如下:
Stream<Integer> resultStream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)))
.filter(x -> x != 0)
.filter(x -> x != 1)
.filter(x -> x != 2);
如果此签名的可变参数可用:
public static <T> Stream<T> concat(Stream<? extends T>... streams);
然后我可以更清楚地写成:
Stream<Integer> resultStream = Stream.concat(
stream1,
stream2,
Stream.of(element)
)
.filter(x -> x != 0)
.filter(x -> x != 1)
.filter(x -> x != 2);
没有各种嵌套Stream.concat
调用。
还是没有提供其他原因?
我想不出这样的原因,因为我们现在无论如何都要完成可变参数调用的工作。