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));
}
houseAddress
Variablen und einen Beispielcode für die darin enthaltenen Elemente.Antworten:
quelle
Arrays.toString(houseAddress.toArray())
toString()
, um den Inhalt seiner Elemente zu drucken. Also, nurlist.toString()
druckt dietoString()
von allen seinen Elementen. Dies gilt für alle Sammlungen.Fügen
toString()
Sieaddress
dann Ihrer Klasse eine Methode hinzuquelle
houseAddress
Argument dafür angeben,Arrays.toString()
da es nicht vom Typ Array ist.Soweit ich weiß, versuchen Sie, eine ArrayList von Arrays zu drucken, und eine Möglichkeit, dies anzuzeigen, wäre
quelle
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 wirdDie Lösung in Ihrer Adressklasse überschreibt die
toString()
Methode wie folgtpublic 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) )
dietoString()
desAddress
Objekts wird aufgerufenquelle
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.
quelle
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);
quelle
Wollen Sie damit sagen, dass
ArrayList
Adressen von Arrays gespeichert werden, weil dies vomtoString
Aufruf zurückgegeben wird oder weil Sie dies tatsächlich speichern?Wenn Sie eines
ArrayList
von Arrays haben (zint[] 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))); }
quelle
public void printList(ArrayList<Address> list){ for(Address elem : list){ System.out.println(elem+" "); } }
quelle
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 :
oder unter Verwendung der Methodenreferenz :
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.
quelle
Setzen Sie
houseAddress.get(i)
die Klammern ein und rufen Sie die.toString()
Funktion auf: dh siehe untenfor(int i = 0; i < houseAddress.size(); i++) { System.out.print((houseAddress.get(i)).toString()); }
quelle
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("\\[\\]", ""));
quelle
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())); }
quelle
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]
quelle
Sie können einen Iterator verwenden. Es ist die einfachste und am wenigsten kontroverse Sache, die man hier machen kann. Say
houseAddress
hat 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
quelle
Das hat mir geholfen:
quelle
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(); }
}}
quelle
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
houseAddress
und unnötige Konvertierungen vermeidenquelle
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 anderenObject
oderCollection
im 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); }
quelle
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()**); }
quelle
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)); }
quelle
Angenommen, dies
houseAddress.get(i)
ist eine, dieArrayList
SietoString()
nach dem hinzufügen könnenArrayList
: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]
quelle
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); } } }
quelle