Quelle est la façon la plus simple d'imprimer un tableau Java ?

En Java, les tableaux ne surchargent pas toString(), donc si vous essayez d'en imprimer un directement, vous obtenez le className + '@&#39 ; + l'hexagone du [hashCode][1] du tableau, comme défini par Object.toString() :

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

Mais en général, nous voulons plutôt quelque chose comme [1, 2, 3, 4, 5]. Quelle est la façon la plus simple de le faire ? Voici quelques exemples d'entrées et de sorties :

// 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]

[1] : https://en.wikipedia.org/wiki/Java_hashCode()

Solution

Depuis Java 5, vous pouvez utiliser [Arrays.toString(arr)][1] ou [Arrays.deepToString(arr)][2] pour les tableaux dans les tableaux. Notez que la version Object[] appelle .toString() sur chaque objet du tableau. La sortie est même décorée de la manière exacte que vous demandez.

Exemples :

  • Tableau simple :

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

Sortie :

    [John, Mary, Bob]
  • Tableau imbriqué :

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

Sortie :

    [[John, Mary], [Alice, Bob]]
  • double Tableau :

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

Sortie :

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

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

Sortie :

    [7, 9, 5, 1, 3 ]

[1] : https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#toString-int:A- [2] : https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#deepToString-java.lang.Object:A-

Commentaires (9)

Vérifiez toujours les bibliothèques standard en premier. Essayez :

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

ou si votre tableau contient d'autres tableaux comme éléments :

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

Si vous utilisez Java 1.4, vous pouvez plutôt faire :

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

(Cela fonctionne aussi en 1.5+, bien sûr).

Commentaires (1)