我正在尝试使用以下代码将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
?
答案 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
方法仅用于从int
到int
的映射。