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

Muh*_*jer 6 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);
Run Code Online (Sandbox Code Playgroud)

但是cannot convert from String to int在做的时候我得到了编译时的错误Integer.toString(i).我以为可能是因为我正在收集int数组中流式传输数据的结果String,但是没有map创建新的Collection

Dav*_*rad 11

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

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

map方法IntStream仅用于从a映射int到a int.