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

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())

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

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()));

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


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.


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

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

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

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.


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

@ 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("\\[\\]", ""));

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

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]


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


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()));

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

}}


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


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

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()**);
}

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

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]

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);
      }
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.