为什么Stream<short[]>
会返回Stream<Short>
而不是void f(short... arr){
Stream<short[]> s = Stream.of(arr);
}
?
short[]
如何将Stream<Short>
转换为var timestamp = new Date().getTime();
timestamp = timestamp - 2 * 24 * 60 * 60 * 1000;
var newDate = new Date(timestamp);
?
答案 0 :(得分:3)
使用Stream.of(T... values)
时,T
必须是引用类型而非基元类型。 short
是基本类型,而short[]
是引用类型,因此Stream.of(shortArray)
会为您提供Stream<short[]>
。
将short[]
转换为Stream<Short>
的一种方法是
Stream<Short> stream = IntStream.range(0, shortArray.length).mapToObj(i -> shortArray[i]);
但是,我会问你为什么要使用short
。
答案 1 :(得分:2)
请注意,Short
没有成为具有自己的Stream类的数字包装类的一部分(例如IntStream
或LongStream
)。
所以你应该写更多的代码。
您可以使用mapToObj()
将short
框Short
:
short[] shorts = ...;
Stream<Short> shortStream = IntStream.range(0, shorts.length)
.mapToObj(i -> shorts[i]);