Преобразовать двумерный массив в строку
Я пытаюсь преобразовать 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
во внутренний цикл.