2013-03-25 6 views
13

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

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

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

[[Ljava.lang.String;@19b8858

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

+4

Вы получаете ссылку на массив. Вы должны перебирать все элементы и объединять их, чтобы получить желаемый результат. –

ответ

12

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

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

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

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

+0

@LuiggiMendoza: обновил ответ :) – Parth

15

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

Arrays.deepToString(tableBornes); 

или многострочный версии

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

thnks, я пробовал это, но я тоже хочу вернуться в строку, чтобы печатать каждый список в одной строке? как это сделать? –

3

Как об этом:

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

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

+0

да, я хочу добавить место, а также вернуться к линии, чтобы иметь модель таблицы. am wondring, если есть способ распечатать таблицу непосредственно, так как у меня есть модель? –