it-swarm.com.de

ArrayList drucken

Ich habe eine ArrayList, die Adressobjekte enthält.

Wie drucke ich die Werte dieser ArrayList aus, was bedeutet, dass ich den Inhalt des Arrays ausdrucken möchte, in diesem Fall Zahlen.

Ich kann es nur dazu bringen, die tatsächliche Speicheradresse des Arrays mit diesem Code auszudrucken:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  
63
dancooper93
Arrays.toString(list.toArray())
83
odoepner

Fügen Sie die toString()-Methode zu Ihrer address-Klasse hinzu

System.out.println(Arrays.toString(houseAddress));
16
Ashwinee K Jha

Soweit ich weiß, versuchen Sie, eine ArrayList von Arrays zu drucken, und die einzige Möglichkeit, dies anzuzeigen, wäre das 

System.out.println(Arrays.deepToString(list.toArray()));
8
Ben Dworkin

da Sie keine benutzerdefinierte Implementierung für die toString()-Methode bereitgestellt haben, ruft sie den Standard auf, bei dem die Adresse für dieses Objekt im Speicher gedruckt wird 

Lösung Überschreiben Sie in Ihrer Address-Klasse die toString()-Methode wie folgt 

public class Address {

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

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

jetzt, wenn du anrufst 

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

System.out.print( houseAddress.get(i) ) wird die toString() des Address-Objekts aufgerufen 

8
confucius

Wollen Sie damit sagen, dass ArrayList Adressen von Arrays speichert, weil dies der Aufruf von toString ist, oder weil Sie dies tatsächlich speichern?

Wenn Sie eine ArrayList von Arrays haben (z.

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

Dann müssen Sie zum Ausdrucken der Array-Werte Arrays.deepToString aufrufen:

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

Sie können es einfach als geben:

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

Ihre Ausgabe sieht wie [address1, address2, address3] aus.

Dies liegt daran, dass die Klasse ArrayList oder ihre Oberklasse eine toString () - Funktion überschrieben hätte.

Hoffe das hilft.

4
Suraj

assium, dass Sie eine solche Zahlenliste haben

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

wenn Sie die Liste ausdrucken

//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);
4
Ragulan28
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}
4
Love Bisaria

Setzen Sie houseAddress.get (i) in die Klammern und rufen Sie die .toString () - Funktion auf: Das heißt, siehe unten

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

Ich bin nicht sicher, ob ich den Begriff "Adressen" verstanden habe (ich gehe hier von houseAddress aus), aber wenn Sie nach einem Weg suchen, um die ArrayList zu drucken, dann gehen Sie hier:

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

Das hat mir geholfen:

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

Seit Java 8 können Sie die forEach () - Methode über die Iterable - Schnittstelle verwenden.
Dies ist eine Standardmethode. Als Argument wird ein Objekt der Klasse verwendet, das die Funktionsschnittstelle Consumer implementiert. Sie können Consumer lokal auf drei Arten implementieren:

Mit anonymous Klasse :

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

Lambda-Ausdruck :

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

oder mit Methodenreferenz :

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

Diese Druckweise funktioniert für alle Implementierungen der Iterable - Schnittstelle.
.__ Alle geben Ihnen die Möglichkeit festzulegen, wie die Elemente gedruckt werden sollen, während toString () die Druckliste in einem Format erzwingt.

1

Sie können sogar eine erweiterte for-Schleife oder einen Iterator verwenden

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

Sie können den Datentyp houseAddress ändern und unnötige Konvertierungen vermeiden 

0

wenn Sie die @Override-Zeichenfolge toString () als Kommentar öffentlich machen, haben Sie die gleichen Ergebnisse wie Sie. Wenn Sie jedoch die toString () -Methode implementieren, funktioniert sie.

öffentliche Klasse 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);
}

}

klasse Adresse { private int addr; öffentliche Adresse (int i) { addr = i; }

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

}

0
user7194131
 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()));
    }
0
Avinash Khadsan

sie können das Druckformat verwenden, wenn Sie das Element nur auf der Konsole drucken möchten.

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

Stellen Sie sicher, dass Sie einen Getter in der House-Adressklasse haben, und verwenden Sie dann:

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

Sie können einen Iterator verwenden. Dies ist die einfachste und am wenigsten umstrittene Sache hier. Angenommen, houseAddress hat Werte des Datentyps String

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

Hinweis: Sie können sogar eine erweiterte for-Schleife verwenden, wie von mir in einer anderen Antwort erwähnt

0