Reputation: 465
I'm trying to convert a String[][]
to a string for display in a GUI. Here's my code:
String[][] tableBornes = SearchPropertiesPlugin.FillBornesTable();
String table = tableBornes.toString();
Here's what it produces:
[[Ljava.lang.String;@19b8858
How can I get something more readable?
Upvotes: 26
Views: 55070
Reputation: 124275
If you want to create one-line representation of array you can use Arrays.deepToString
.
In case you want to create multi-line representation you will probably need to iterate over all rows and append result of Array.toString(array[row])
like
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();
Since Java 8 you can even use StringJoiner
with will automatically add delimiter for you:
StringJoiner sj = new StringJoiner(System.lineSeparator());
for (String[] row : array) {
sj.add(Arrays.toString(row));
}
String result = sj.toString();
or using streams
String result = Arrays
.stream(array)
.map(Arrays::toString)
.collect(Collectors.joining(System.lineSeparator()));
Upvotes: 21
Reputation: 136152
try one line version
Arrays.deepToString(tableBornes);
or multiline version
StringBuilder sb = new StringBuilder();
for(String[] s1 : tableBornes){
sb.append(Arrays.toString(s2)).append('\n');
}
String s = sb.toString();
Upvotes: 33
Reputation: 11658
Try Arrays.toString(Object[] a)
for(String[] a : tableBornes)
System.out.println(Arrays.toString(a));
The above code will print every array in two dimensional array tableBornes
in newline.
Upvotes: 6
Reputation: 20264
How about this:
StringBuilder sb = new StringBuilder();
for(String[] s1 : tableBornes){
for(String s2 : s1){
sb.append(s2);
}
}
String table = sb.toString();
If you want to insert spaces or some other character between the items just add another append
call within the inner loop.
Upvotes: 3