【发布时间】:2014-03-30 11:28:49
【问题描述】:
目前我们在 Java 8 中有以下Stream.concat:
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 调用。
或者还有其他没有提供的原因吗?
我想不出这样的原因,因为我们现在无论如何都要完成可变参数调用的工作。
【问题讨论】:
-
你可能想通过这个线程 -> mail.openjdk.java.net/pipermail/lambda-dev/2013-July/…
标签: java java-8 java-stream