Dmy*_* S. 5 java generics lambda functional-programming java-stream
我有两个相同大小的数组:
int[] permutation
T[] source
我想这样做
Arrays.stream(permutation).map(i -> source[i]).toArray();
Run Code Online (Sandbox Code Playgroud)
但它不会起作用:不兼容的类型:lambda表达式中的错误返回类型
Ale*_* C. 13
Arrays.stream
有一个int[]
会给你一个IntStream
所以map
期待一个IntUnaryOperator
(一个功能int -> int
).
你提供的函数是int -> T
T是一个对象的类型(如果T
是Integer
由于取消装箱,它将起作用,但对于无界泛型类型参数,假设它是泛型类型则不起作用).
你正在寻找的是改为使用mapToObj
,它需要一个IntFunction
(一个函数int -> T
)并给你一个Stream<T>
:
//you might want to use the overloaded toArray() method also.
Arrays.stream(permutation).mapToObj(i -> source[i]).toArray();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7238 次 |
最近记录: |