Ela*_*nda 7 java lambda java-8 java-stream
我尝试了几种不成功的方法.
this.tileUpdateTimes是long[]和other.tileUpdateTimes是int[]
this.tileUpdateTimes = Arrays.stream(other.tileUpdateTimes).toArray(size -> new long[size]);
this.tileUpdateTimes = Arrays.stream(other.tileUpdateTimes)
.map(item -> ((long) item)).toArray();
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
Tun*_*aki 21
您需要使用该mapToLong操作.
int[] intArray = {1, 2, 3};
long[] longArray = Arrays.stream(intArray).mapToLong(i -> i).toArray();
Run Code Online (Sandbox Code Playgroud)
或者,正如Holger所指出的,在这种情况下,您可以直接使用asLongStream():
int[] intArray = {1, 2, 3};
long[] longArray = Arrays.stream(intArray).asLongStream().toArray();
Run Code Online (Sandbox Code Playgroud)
map原始流上的方法返回相同原始类型的流.在这种情况下,IntStream.map仍将返回IntStream.
演员要long与
.map(item -> ((long) item))
Run Code Online (Sandbox Code Playgroud)
实际上会使代码不能编译,因为IntStream.map预期的mapper 会返回一个int,你需要一个显式的强制转换来从新的转换long为int.
随着.mapToLong(i -> i),这需要一个映射器返回long的int i值被提升到long自动,所以你并不需要强制转换.
| 归档时间: |
|
| 查看次数: |
13884 次 |
| 最近记录: |