我正在尝试将二维int数组转换为单个int,其中每个数字之间有一个空格,并且在使用流的每个单个数组之后有一个换行符。
我已经为使用mapToObj的单维数组轻松完成了这一点,但当流由数组而不是整数组成时,情况并非如此。
int[] a = {1, 2, 3, 4};
String[] strArray = Arrays.stream(a).mapToObj(String::valueOf).toArray(String[]::new);
String joined = String.join(" ", strArray);
a
会映射到这里的1 2 3 4
。我想要的是有这样的东西
int[][]a={{1,2,3},{4,5,6},{7,8,9}};
地图来
1 2 3
4 5 6
7 8 9
如何获得类似于join
的东西,但使用二维数组并且仍然使用流?
你可以使用这样的东西:
String output = Arrays.stream(a)
.map(ints -> IntStream.of(ints).mapToObj(String::valueOf).collect(Collectors.joining(" ")))
.collect(Collectors.joining("\n"));
输出将是:
1 2 3
4 5 6
7 8 9
首先,我们将每个整数数组映射到一个字符串,该字符串由空格分隔的整数组成,然后我们收集那些用“\n”连接它们的字符串。