Qual'é a maneira mais simples de imprimir um array Java?

Em Java, arrays don't override toString(), então se você tentar imprimir um diretamente, você recebe o className + '@' + o hexágono do hashCode do array, como definido por Object.toString():

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

Mas geralmente, nós'queremos algo mais como [1, 2, 3, 4, 5]. Qual'é a maneira mais simples de fazer isso? Aqui estão alguns exemplos de entradas e saídas:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Solução

Desde o Java 5 você pode utilizar Arrays.toString(arr) ou Arrays.deepToString(arr) para arrays dentro de arrays. Note que o Object[] versão chama .toString() em cada objeto do array. A saída é até mesmo decorada da maneira exata que você está perguntando.

Exemplos:

  • Simple Array:

      String[] array = novo String[] {"John", "Mary", "Bob"};
      System.out.println(Arrays.toString(array));

Saída:

    [João, Maria, Bob]
  • Nested Array:

      String[][] deepArray = nova String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
      System.out.println(Arrays.toString(deepArray));
      //output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
      System.out.println(Arrays.deepToString(deepArray));

Saída:

    [João, Maria], [Alice, Bob]
  • "Duplo" Array:

      double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
      System.out.println(Arrays.toString(doubleArray));

Saída:

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
  • int Array:

      int[] intArray = { 7, 9, 5, 1, 3 };
      System.out.println(Arrays.toString(intArray));

Saída:

    [7, 9, 5, 1, 3 ]
Comentários (9)

Verifique sempre primeiro as bibliotecas padrão. Tente:

System.out.println(Arrays.toString(array));

ou se a sua matriz contém outras matrizes como elementos:

System.out.println(Arrays.deepToString(array));
Comentários (3)

Se você estiver usando Java 1.4, você pode fazer:

System.out.println(Arrays.asList(array));

(Isto também funciona em 1.5+, é claro).

Comentários (1)