将基元的流数组转换为流

时间:2018-03-25 14:53:54

标签: java java-8 java-stream

  1. 为什么Stream<short[]>会返回Stream<Short>而不是void f(short... arr){ Stream<short[]> s = Stream.of(arr); }

    short[]
  2. 如何将Stream<Short>转换为var timestamp = new Date().getTime(); timestamp = timestamp - 2 * 24 * 60 * 60 * 1000; var newDate = new Date(timestamp);

2 个答案:

答案 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类的数字包装类的一部分(例如IntStreamLongStream)。 所以你应该写更多的代码。

您可以使用mapToObj()shortShort

short[] shorts = ...;
Stream<Short> shortStream = IntStream.range(0, shorts.length)
                                     .mapToObj(i -> shorts[i]);