ArrayList drucken

81

Ich habe eine ArrayList, die Adressobjekte enthält.

Wie drucke ich die Werte dieser ArrayList, dh ich drucke den Inhalt des Arrays aus, 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));
}  
dancooper93
quelle
Möchten Sie den Adressspeicherort im Speicher haben?
Paul Nikonowicz
Entschuldigung, ich verstehe nicht, was du meinst. Die Arrayliste speichert die Adresse, die auf das Array zeigt, und ich möchte den Inhalt des Arrays drucken, aber ich weiß nicht, wie ich vorgehen soll.
Dancooper93
Ich habe versucht, die Frage neu zu formulieren, um sie klarer zu machen.
antony.trupe
Mit Adresse meint er die Hausadresse. Ich denke.
Kuldeep Jain
1
Bitte geben Sie uns einfach die Deklaration der houseAddressVariablen und einen Beispielcode für die darin enthaltenen Elemente.
Louis Wasserman

Antworten:

110
Arrays.toString(list.toArray())
Odoepner
quelle
Die gleiche Ausgabe wird von System.out.println (Liste) gedruckt.
Asha
4
Liste ist Hausadresse hier:Arrays.toString(houseAddress.toArray())
Anfänger
3
AbstractCollection überschreibt bereits toString(), um den Inhalt seiner Elemente zu drucken. Also, nur list.toString()druckt die toString()von allen seinen Elementen. Dies gilt für alle Sammlungen.
Hanif
18

Fügen toString()Sie addressdann Ihrer Klasse eine Methode hinzu

System.out.println(Arrays.toString(houseAddress));
Ashwinee K Jha
quelle
39
Dies würde nur für ein Array funktionieren, nicht für eine Array-Liste. Sie können kein houseAddressArgument dafür angeben, Arrays.toString()da es nicht vom Typ Array ist.
Beckah
Meiner Meinung nach ist Looping hier nur möglich. Wenn jemand eine bessere Option kennt, teilen Sie diese bitte mit.
Geniushkg
17

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

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

Da Sie keine benutzerdefinierte Implementierung für die toString()Methode angegeben haben, wird die Standardeinstellung aufgerufen, auf der die Adresse im Speicher für dieses Objekt gedruckt wird

Die Lösung in Ihrer Adressklasse überschreibt 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) )die toString()des AddressObjekts wird aufgerufen

Konfuzius
quelle
7

Sie können es einfach geben als:

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

Ihre Ausgabe wird so aussehen [address1, address2, address3]

Dies liegt daran, dass für die Klasse ArrayList oder ihre Oberklasse eine Funktion toString () überschrieben wird.

Hoffe das hilft.

Suraj
quelle
7

Assium, dass Sie eine solche Zahlenliste haben

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

wenn Sie die Liste drucken

//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);
Ragulan
quelle
5

Wollen Sie damit sagen, dass ArrayListAdressen von Arrays gespeichert werden, weil dies vom toStringAufruf zurückgegeben wird oder weil Sie dies tatsächlich speichern?

Wenn Sie eines ArrayListvon Arrays haben (z

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

Um die Array-Werte zu drucken, müssen Sie Folgendes aufrufen Arrays.deepToString:

for (int i = 0; i < houseAddress.size(); i++) {
     System.out.println(Arrays.deepToString(houseAddress.get(i)));
}
JoshBramlett
quelle
4
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}
Liebe Bisaria
quelle
Dies unterscheidet sich nicht vom aktuellen Code des OP. Das Problem bleibt bestehen.
Tom
3

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

Mit der anonymen 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 unter Verwendung der Methodenreferenz :

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

Diese Art des Druckens funktioniert für alle Implementierungen der Iterable- Schnittstelle.
In allen Fällen können Sie festlegen, wie die Elemente gedruckt werden sollen, während toString () das Drucken von Listen in einem Format erzwingt.

Michał Szewczyk
quelle
3

Setzen Sie houseAddress.get(i)die Klammern ein und rufen Sie die .toString()Funktion auf: dh siehe unten

for(int i = 0; i < houseAddress.size(); i++) {
    System.out.print((houseAddress.get(i)).toString());
}
21stking
quelle
@ Mr.Goose Ich verstehe deine Frage nicht ganz klar, was meinst du?
21.
Der Aufruf von .toString () ist redundant.
Gabriel Pellegrino
2

Ich bin mir nicht sicher, ob ich den Begriff der Adressen verstanden habe (ich gehe hier von houseAddress aus), aber wenn Sie nach einer Möglichkeit suchen, die ArrayList zu drucken, können Sie loslegen:

System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
Manu
quelle
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()));
    }
Avinash Khadsan
quelle
2

Der einfachste Weg, eine ArrayList zu drucken, ist die Verwendung von toString

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

Ausgabe

[111, 112, 113]

Rifaquat Siddiqui
quelle
2

Sie können einen Iterator verwenden. Es ist die einfachste und am wenigsten kontroverse Sache, die man hier machen kann. Say houseAddresshat Werte vom DatentypString

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

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

Ishan Srivastava
quelle
1
ps es ist am wenigsten kontrovers, weil Sie hier keine unnötigen Konvertierungen wie das Konvertieren von ArrayList in Array und das anschließende Konvertieren in einen String zum Drucken durchführen
Ishan Srivastava
1

Das hat mir geholfen:

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

Wenn Sie den öffentlichen @Override-String toString () als Kommentar festlegen, erhalten Sie dieselben Ergebnisse wie zuvor. Wenn Sie jedoch Ihre toString () -Methode implementieren, funktioniert dies.

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

}}

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

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

}}

user7194131
quelle
1

Sie können sogar eine erweiterte for-Schleife oder einen Iterator wie den folgenden verwenden:

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

Sie können es in einen beliebigen Datentyp ändern houseAddressund unnötige Konvertierungen vermeiden

Ishan Srivastava
quelle
1

JSON

Eine alternative Lösung könnte darin bestehen, Ihre Liste in das JSON- Format zu konvertieren und den Json-String zu drucken. Der Vorteil ist ein gut formatierter und lesbarer Object-String, ohne dass der implementiert werden muss toString(). Zusätzlich funktioniert es für alle anderen Objectoder Collectionim laufenden Betrieb.

Beispiel mit Gson von 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);
}
tobsob
quelle
0

Stellen Sie sicher, dass Sie einen Getter in der Hausadressklasse haben, und verwenden Sie dann:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i)**.getAddress()**);
}
gd-ogra
quelle
1
Willkommen bei Stack Overflow . Bitte lesen Sie den Abschnitt Antworten und bearbeiten Sie Ihre Frage entsprechend.
Compor
0

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));
}  
Kenneth Ryan Dy
quelle
0

Angenommen, dies houseAddress.get(i)ist eine, die ArrayListSie toString()nach dem hinzufügen können ArrayList:

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

Ein allgemeines Beispiel:

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

Dies ist ein einfacher Code zum Hinzufügen des Werts in ArrayList und zum Drucken des ArrayList-Werts

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);
      }
    }
}
Samim Aktar
quelle