Kako najenostavneje natisniti polje v Javi?

V Javi matrike ne razveljavljajo funkcije toString(), zato če jo poskušate natisniti neposredno, dobite className + '@' + šestnajstino hashCode matrike, kot jo določa Object.toString():

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

Toda običajno bi dejansko želeli nekaj bolj podobnega kot [1, 2, 3, 4, 5]. Kakšen je najpreprostejši način za to? Tukaj je nekaj primerov vhodov in izhodov:

// 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]
Rešitev

Od Jave 5 lahko za polja v poljih uporabite Arrays.toString(arr) ali Arrays.deepToString(arr). Upoštevajte, da različica Object[] kliče .toString() za vsak objekt v polju. Izpis je celo okrašen na točno tak način, kot ste vprašali.

Primeri:

  • Enostavno polje:

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

Izhodni rezultat:

    [John, Mary, Bob]
  • Vgnezdeno polje:

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

Izhod:

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

      = { 7,0, 9,0, 5,0, 1,0, 3,0 };
      System.out.println(Arrays.toString(doubleArray));

Izpis:

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

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

Izhod:

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

Vedno najprej preverite standardne knjižnice. Poskusite:

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

ali če vaše polje kot elemente vsebuje druga polja:

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

Če uporabljate Javo 1.4, lahko namesto tega uporabite:

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

(To seveda deluje tudi v različici 1.5+.)

Komentarji (1)