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));
}
Arrays.toString(list.toArray())
Fügen Sie die toString()
-Methode zu Ihrer address
-Klasse hinzu
System.out.println(Arrays.toString(houseAddress));
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()));
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
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)));
}
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.
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);
public void printList(ArrayList<Address> list){
for(Address elem : list){
System.out.println(elem+" ");
}
}
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());
}
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("\\[\\]", ""));
Das hat mir geholfen:
System.out.println(Arrays.toString(codeLangArray.toArray()));
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.
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
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();
}
}
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()));
}
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));
}
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()**);
}
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