1790 votos

Manera más sencilla de imprimir un array en Java

En Java, las matrices no anula toString(), por lo que si intenta imprimir en forma directa, se obtiene extraño de salida, incluyendo la ubicación de la memoria:

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

Pero por lo general, nos gustaría realmente quiere 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]

2397voto

Esko Puntos 15578

En Java 5 Arrays.toString(arr) o Arrays.deepToString(arr) para las matrices dentro de las matrices. y agrega la Nota Objeto[] la versión llamadas .toString() de cada objeto en la matriz. Si mi memoria me sirve correcta, el resultado es incluso decorado en la manera exacta en la que estás preguntando.

Edit: no se olvide de agregar import java.util.Arrays; como esta:

package packageName;
import java.util.Arrays;
...

336voto

Limbic System Puntos 2442

Compruebe siempre las bibliotecas estándar de primera. Trate de:

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

o si la matriz contiene otras matrices como elementos:

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

101voto

Russ Bateman Puntos 6868

Este es bueno saber, sin embargo, como para "comprobar siempre la norma de bibliotecas primer" nunca hubiese tropezado con el truco de Arrays.toString( myarray )

--ya me estaba concentrando en el tipo de myarray a ver cómo hacer esto. Yo no quiero tener que recorrer la cosa: yo quería una simple llamada a hacer salir a la luz similar a lo que veo en el depurador de Eclipse y myarray.toString() simplemente no hacerlo.

import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );

84voto

Eric Baker Puntos 61

En JDK1.8 puede utilizar operaciones de agregado y una expresión lambda:

String[] strArray = new String[] {"John", "Mary", "Bob"};

Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

/* output:
John
Mary
Bob
*/

40voto

Ross Puntos 4080

Si estás usando Java 1.4, se puede hacer:

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

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X