如何使用Java Stream map在不同类型之间进行映射?

时间:2015-07-30 10:18:31

标签: java generics lambda functional-programming java-stream

我有两个大小相等的数组:

  1. int[] permutation
  2. T[] source
  3. 我想像这样做

    Arrays.stream(permutation).map(i -> source[i]).toArray();
    

    但它不会起作用:不兼容的类型:lambda表达式中的错误返回类型

1 个答案:

答案 0 :(得分:12)

带有> cor(ts2plus$mean, ts2preds) [1] 0.9760174

Arrays.stream会为您提供int[],因此IntStreammap(函数IntUnaryOperator)。

您提供的函数属于int -> int类型,其中T是一个对象(如果int -> T由于取消装箱而成为T,它将起作用,但不适用于无界泛型类型参数,假设它是一种通用类型)。

您要找的是使用Integer代替mapToObj(一个函数IntFunction)并返回int -> T

Stream<T>