Imprimir ArrayList


81

Tengo una ArrayList que contiene objetos de dirección.

¿Cómo imprimo los valores de este ArrayList, lo que significa que estoy imprimiendo el contenido del Array, en este caso números.

Solo puedo hacer que imprima la dirección de memoria real de la matriz con este código:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  

¿Quieres la ubicación de la dirección en la memoria?
Paul Nikonowicz

lo siento, no entiendo lo que quieres decir. la lista de matrices almacena la dirección que apunta a la matriz, y quiero imprimir el contenido de la matriz, pero no sé cómo hacerlo.
dancooper93

Intenté reformular la pregunta para aclararla.
antony.trupe

Por dirección, se refiere a la dirección de la casa. Yo creo que.
Kuldeep Jain

1
Por favor, solo danos la declaración de la houseAddressvariable y algún código de muestra para los elementos que contiene.
Louis Wasserman

Respuestas:


110
Arrays.toString(list.toArray())

System.out.println (lista) imprime la misma salida;
Asha

4
La lista es casa Dirección aquí:Arrays.toString(houseAddress.toArray())
Principiante

3
AbstractCollection ya anula la toString()impresión del contenido de sus elementos. Entonces, solo list.toString()imprime el toString()de todos sus elementos. Esto es cierto para todas las colecciones.
Hanif

18

Agregue un toString()método a su addressclase y luego haga

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

39
Esto solo funcionaría para una matriz, no para una lista de matrices. No se puede proporcionar houseAddresscomo argumento Arrays.toString()porque no es de tipo Array.
beckah

en mi opinión, el bucle solo es posible aquí, si alguien conoce una mejor opción, por favor comparta
geniushkg

17

Por lo que tengo entendido, está intentando imprimir una ArrayList de matrices y una forma de mostrar eso sería

System.out.println(Arrays.deepToString(list.toArray()));

9

dado que no ha proporcionado una implementación personalizada para el toString()método, llama al valor predeterminado en el que imprimirá la dirección en la memoria para ese objeto

La solución en su clase de dirección anula el toString()método como este

public class Address {

int addressNo ; 
....
....
...

protected String toString(){
    return Integer.toString(addressNo);
}

ahora cuando llamas

houseAddress.get(i)  in the `System.out.print()` method like this

System.out.print( houseAddress.get(i) )el toString()del Addressobjeto se llamará


7

Simplemente puede darlo como:

System.out.println("Address:" +houseAddress);

Tu salida se verá como [address1, address2, address3]

Esto se debe a que la clase ArrayList o su superclase tendría una función toString () anulada.

Espero que esto ayude.


7

Assium que tienes una lista de números como esa

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

si imprime la lista

//method 1
// Conventional way of printing arraylist
for (int number : numbers) {
    System.out.print(number);
}

//method 2
// Lambda Expression to print arraylist
numbers.forEach((Integer value) -> System.out.print(value));

//method 3
// Lambda Expression to print arraylist
numbers.forEach(value -> System.out.print(value));


//method 4
// Lambda Expression (method reference) to print arraylist
numbers.forEach(System.out::print);

5

¿Está diciendo que ArrayListestá almacenando direcciones de matrices porque eso es lo que está regresando de la toStringllamada, o porque eso es realmente lo que está almacenando?

Si tiene una ArrayListmatriz de (por ejemplo,

int[] arr = {1, 2, 3};
houseAddress.add(arr);

Luego, para imprimir los valores de la matriz, debe llamar Arrays.deepToString:

for (int i = 0; i < houseAddress.size(); i++) {
     System.out.println(Arrays.deepToString(houseAddress.get(i)));
}

4
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}

Esto no es diferente del código actual de OP. El problema persiste.
Tom

3

Desde Java 8 , puede usar el método forEach () desde la interfaz Iterable .
Es un método predeterminado. Como argumento, toma un objeto de clase, que implementa la interfaz funcional Consumer . Puede implementar Consumer localmente de tres formas:

Con clase anónima :

houseAddress.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
}); 

expresión lambda :

houseAddress.forEach(s -> System.out.println(s));

o usando la referencia de método :

houseAddress.forEach(System.out::print);

Esta forma de impresión funciona para todas las implementaciones de interfaz Iterable .
Todos ellos le brindan la forma de definir cómo se imprimirán los elementos, mientras que toString () impone la impresión de la lista en un formato.


3

Ponga houseAddress.get(i)entre corchetes y llame a la .toString()función: es decir, consulte a continuación

for(int i = 0; i < houseAddress.size(); i++) {
    System.out.print((houseAddress.get(i)).toString());
}

@ Mr.Goose no entiendo su pregunta del todo clara, ¿qué quiere decir?
21 de

la llamada a .toString () es redundante.
Gabriel Pellegrino

2

No estoy seguro de haber entendido la noción de direcciones (supongo que houseAddress aquí), pero si está buscando una forma de imprimir ArrayList, aquí tiene:

System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));

2
 public static void main(String[] args) {
        List<Moyen> list = new ArrayList<Moyen>();
        Moyen m1 = new Moyen();
        m1.setCodification("c1");
        m1.setCapacityManager("Avinash");
        Moyen m2 = new Moyen();
        m2.setCodification("c1");
        m2.setCapacityManager("Avinash");
        Moyen m3 = new Moyen();
        m3.setCodification("c1");
        m3.setCapacityManager("Avinash");

        list.add(m1);
        list.add(m2);
        list.add(m3);
        System.out.println(Arrays.toString(list.toArray()));
    }

2

La forma más sencilla de imprimir una ArrayList es mediante toString

List<String> a=new ArrayList<>();
    a.add("111");
    a.add("112");
    a.add("113");
    System.out.println(a.toString());

Salida

[111, 112, 113]


2

Puede utilizar un iterador. Es la cosa más simple y menos controvertida que se puede hacer aquí. Say houseAddresstiene valores de tipo de datosString

Iterator<String> iterator = houseAddress.iterator();
while (iterator.hasNext()) {
    out.println(iterator.next());
}

Nota: Incluso puede usar un bucle for mejorado para esto, como mencioné en otra respuesta


1
ps, es menos controvertido porque no está haciendo ninguna conversión innecesaria aquí, como convertir ArrayList en Array y luego convertirlo en una cadena para imprimirlo
Ishan Srivastava

1

Esto me ayudó:

System.out.println(Arrays.toString(codeLangArray.toArray()));

1

si hace que @Override sea pública String toString () como comentarios, obtendrá los mismos resultados que tuvo. Pero si implementa su método toString (), funcionará.

clase pública PrintingComplexArrayList {

public static void main(String[] args) {
    List houseAddress = new ArrayList();
    insertAddress(houseAddress);
    printMe1(houseAddress);
    printMe2(houseAddress);
}

private static void insertAddress(List address)
{
    address.add(new Address(1));
    address.add(new Address(2));
    address.add(new Address(3));
    address.add(new Address(4));
}
private static void printMe1(List address)
{
    for (int i=0; i<address.size(); i++)
        System.out.println(address.get(i));
}

private static void printMe2(List address)
{
    System.out.println(address);
}

}

dirección de clase {dirección privada int; Dirección pública (int i) {addr = i; }

@Override public String toString()
{
    Integer iAddr = new Integer (addr);
    return iAddr.toString();
}

}


1

Incluso puede usar un bucle for mejorado o un iterador como:

for (String name : houseAddress) {
    System.out.println(name);
}

Puede cambiarlo a cualquier tipo de datos houseAddressy evita conversiones innecesarias


1

JSON

Una solución alternativa podría convertir su lista en formato JSON e imprimir el Json-String. La ventaja es un Object-String bien formateado y legible sin la necesidad de implementar el toString(). Además, funciona para cualquier otro Objecto Collectionsobre la marcha.

Ejemplo usando Gson de Google :

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

...
public static void printJsonString(Object o) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    /*
     * Some options for GsonBuilder like setting dateformat or pretty printing
     */
    Gson gson = gsonBuilder.create();
    String json= gson.toJson(o);
    System.out.println(json);
}

0

Asegúrese de tener un captador en la clase de dirección de la casa y luego use:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i)**.getAddress()**);
}

1
Bienvenido a Stack Overflow . Revise la sección Cómo responder y edite su pregunta en consecuencia.
compor

0

puede usar el formato de impresión si solo desea imprimir el elemento en la consola.

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.printf("%s", houseAddress.get(i));
}  

0

Suponiendo que houseAddress.get(i)es un ArrayList, puede agregar toString()después de ArrayList:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i).toString());
} 

Un ejemplo general:

ArrayList<Double> a = new ArrayList();
a.add(2.);
a.add(32.);
System.out.println(a.toString());
// output
// [2.0, 32.0]

0

Este es un código simple para agregar el valor en ArrayList e imprimir el valor de ArrayList

public class Samim {

public static void main(String args[]) {
    // Declare list
    List<String> list = new ArrayList<>();

    // Add value in list
    list.add("First Value ArrayPosition=0");
    list.add("Second Value ArrayPosition=1");
    list.add("Third Value ArrayPosition=2");
    list.add("Fourth Value ArrayPosition=3");
    list.add("Fifth Value ArrayPosition=4");
    list.add("Sixth Value ArrayPosition=5");
    list.add("Seventh Value ArrayPosition=6");

    String[] objects1 = list.toArray(new String[0]);

    // Print Position Value
    System.err.println(objects1[2]);

    // Print All Value
    for (String val : objects1) {
        System.out.println(val);
      }
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.