[英]How to use Java Stream map for mapping between different types?
我有两个相同大小的数组:
int[] permutation
T[] source
我想这样做
Arrays.stream(permutation).map(i -> source[i]).toArray();
但它不会起作用: 不兼容的类型:lambda表达式中的错误返回类型
带有int[]
Arrays.stream
将为您提供一个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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.