Преобразовать двумерный массив в строку

Я пытаюсь преобразовать String[][] в строку для отображения в графическом интерфейсе. Здесь мой код:

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

Вот что он производит:

[[Ljava.lang.String;@19b8858

Как я могу получить что-то более читаемое?

Ответ 1

Если вы хотите создать однострочное представление массива, вы можете использовать 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()));

Ответ 2

попробуйте одну строку версии

Arrays.deepToString(tableBornes);

или многострочная версия

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

Ответ 3

Попробуйте Arrays.toString(Object[] a)

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

Вышеприведенный код будет печатать каждый массив в двухмерном массиве tableBornes в новой строке.

Ответ 4

Как насчет этого:

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

Если вы хотите вставить пробелы или какой-либо другой символ между элементами, просто добавьте еще один вызов append во внутренний цикл.