¿Cuál es la forma más sencilla de imprimir un array en Java?

En Java, los arrays no anulan toString(), por lo que si se intenta imprimir uno directamente, se obtiene el className + '@' + el hexágono del hashCode del array, tal y como lo define Object.toString():

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

Pero normalmente, querríamos algo más como [1, 2, 3, 4, 5]. ¿Cuál es la forma más sencilla de hacerlo? Aquí hay algunos ejemplos de entradas y salidas:

// 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]
Solución

Desde Java 5 se puede utilizar Arrays.toString(arr) o Arrays.deepToString(arr) para arrays dentro de arrays. Tenga en cuenta que la versión Object[] llama a .toString() en cada objeto del array. La salida está incluso decorada de la forma exacta que usted pide.

Ejemplos:

  • Array simple:

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

Salida:

    [Juan, María, Bob]
  • Array anidado:

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

Salida:

    [[Juan, María], [Alicia, Bob]]
  • double Array:

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

Salida:

    [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));

Salida:

    [7, 9, 5, 1, 3 ]
Comentarios (9)

Comprueba siempre primero las bibliotecas estándar. Inténtalo:

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

o si tu array contiene otros arrays como elementos:

System.out.println(Arrays.deepToString(array));
Comentarios (3)

Si utiliza Java 1.4, puede hacerlo en su lugar:

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

(Esto también funciona en 1.5+, por supuesto).

Comentarios (1)