如何使用Streams将2D int数组转换为2D String数组?

时间:2017-06-05 21:54:26

标签: java multidimensional-array java-8 java-stream

我正在尝试使用以下代码将2D int数组转换为2D String数组:

Arrays.stream(intArray).map(a -> 
    Arrays.stream(a).map(i -> 
        Integer.toString(i)).toArray()).toArray(String[][]::new);

但是在执行cannot convert from String to int时我得到了编译时错误Integer.toString(i)。我想这可能是因为我收集了在int数组中传输String数组的结果,但是没有map创建新的Collection

1 个答案:

答案 0 :(得分:11)

Arrays.stream上的

int[]会返回IntStream,并从int转到String或任何其他Object,必须使用IntStream.mapToObj方法,而不是map方法:

Arrays.stream(intArray).map(a -> 
    Arrays.stream(a).mapToObj(i -> 
        Integer.toString(i)).toArray(String[]::new)).toArray(String[][]::new);

map IntStream方法仅用于从intint的映射。