将二维数组转换为字符串

我正在尝试将String[][]转换为字符串以在GUI中显示。 这是我的代码:

 String[][] tableBornes = SearchPropertiesPlugin.FillBornesTable(); String table = tableBornes.toString(); 

这是它产生的东西:

[[Ljava.lang.String;@19b8858

我怎样才能获得更具可读性的东西?

如果要创建数组的单行表示,可以使用Arrays.deepToString


如果你想创建多行表示,你可能需要迭代所有行并追加Array.toString(array[row])

 String[][] array = { { "a", "b" }, { "c" } }; String lineSeparator = System.lineSeparator(); StringBuilder sb = new StringBuilder(); for (String[] row : array) { sb.append(Arrays.toString(row)) .append(lineSeparator); } String result = sb.toString(); 

从Java 8开始,你甚至可以使用StringJoiner为你自动添加分隔符:

 StringJoiner sj = new StringJoiner(System.lineSeparator()); for (String[] row : array) { sj.add(Arrays.toString(row)); } String result = sj.toString(); 

或使用流

 String result = Arrays .stream(array) .map(Arrays::toString) .collect(Collectors.joining(System.lineSeparator())); 

尝试一行版本

 Arrays.deepToString(tableBornes); 

或多行版本

 StringBuilder sb = new StringBuilder(); for(String[] s1 : tableBornes){ sb.append(Arrays.toString(s2)).append('\n'); } String s = sb.toString(); 

试试Arrays.toString(Object[] a)

 for(String[] a : tableBornes) System.out.println(Arrays.toString(a)); 

上面的代码将在换行符中打印二维数组tableBornes中的每个数组。

这个怎么样:

 StringBuilder sb = new StringBuilder(); for(String[] s1 : tableBornes){ for(String s2 : s1){ sb.append(s2); } } String table = sb.toString(); 

如果要在项目之间插入空格或其他字符,只需在内部循环中添加另一个append调用。