如何使用流将二维int数组转换为单个字符串?

jpt*_*er2 0 java string java-stream

我正在尝试将二维int数组转换为单个int,其中每个数字和每个使用流的单个数组之后的换行符之间都有一个空格。

我已经使用mapToObj轻松地对一维数组完成了此操作,但是当流是由数组而不是int组成时,这不是很容易。

int[] a = {1, 2, 3, 4};

String[] strArray = Arrays.stream(a).mapToObj(String::valueOf).toArray(String[]::new);

String joined = String.join(" ", strArray);
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

如何获得与相似的东西joined,但具有二维数组并且仍在使用流?

mic*_*alk 6

您可以使用如下所示的内容:

 String output = Arrays.stream(a)
                .map(ints -> IntStream.of(ints).mapToObj(String::valueOf).collect(Collectors.joining(" ")))
                .collect(Collectors.joining("\n"));
Run Code Online (Sandbox Code Playgroud)

输出将是:

1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)

首先,我们将每个整数数组映射到一个由空格分隔的整数组成的字符串,然后收集那些用“ \ n”将它们连接在一起的字符串。