您需要使用mapToLong https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html#mapToLong-java.util.function.IntToLongFunction-手术。
int[] intArray = {1, 2, 3};
long[] longArray = Arrays.stream(intArray).mapToLong(i -> i).toArray();
or, as Holger https://stackoverflow.com/users/2711488/holger指出,在这种情况下,您可以直接使用asLongStream() https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html#asLongStream--:
int[] intArray = {1, 2, 3};
long[] longArray = Arrays.stream(intArray).asLongStream().toArray();
The map
原始流上的方法返回相同原始类型的流。在这种情况下,IntStream.map https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html#map-java.util.function.IntUnaryOperator-仍然会返回一个IntStream
.
演员阵容long
with
.map(item -> ((long) item))
实际上会使代码无法编译,因为使用了映射器IntStream.map
预计会返回一个int
and 您需要显式强制转换才能从新强制转换进行转换long to int https://stackoverflow.com/questions/4355303/how-can-i-convert-a-long-to-int-in-java.
With .mapToLong(i -> i)
,它期望映射器返回long
, the int i
value 被提升 https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.6.2 to long
自动,所以你不需要强制转换。