2017-06-05 119 views
5

我试图二维int数组转换为二维String数组与此代码:如何将2D int数组转换为带有Streams的2D String数组?

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

但这样做Integer.toString(i)当我得到的编译时错误cannot convert from String to int。我认为这可能是因为我正在收集在String阵列中流式传输int阵列的结果,但是不会创建新的Collection

回答

10

Arrays.streamint[]返回一个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仅用于将int映射到int