Asma.O
Asma.O

Reputation: 465

convert two-dimensional array to string

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

Answers (4)

Pshemo
Pshemo

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

Evgeniy Dorofeev
Evgeniy Dorofeev

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

Parth Soni
Parth Soni

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

codebox
codebox

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

Related Questions