# Auf Objekte in Arraylist zugreifen



## Lazaii (29. Okt 2012)

Guten Morgen allerseits,

Ich hatte gestern Abend vergeblich versucht meine Hausaufgaben zu lösen, irgendwie stehe ich auf dem Schlauch.

Ich habe 3 Klassen. Konten / Bank / Testklasse

Folgendes Szenario. Ich habe eine Klasse "Konten" welche die Variablen Name/Vorname/Kontostand haben. (werden beim initialisieren abgefüllt mit Werten)

Nun habe ich in der Klasse "Bank" eine Arraylist erstellt, wo ich die erzeugten Konten-Objekte speichern will. (Mithilfe des Konstruktors wird die Arraylist erstellt, und mit einer Add Methode dann die Objekte zu einem späteren Zeitpunkt übergeben.)

Soweit klappt alles ganz gut, aber nun soll ich in der Klasse Bank eine Methode schreiben, welche den Kontostand aller Konto-Objekte addiert.
Und hier weiss ich nicht mehr weiter. Wenn das ein "normales" Array wäre, könnte ich ja mit einer For-Schlaufe durchs Array gehen und alle Werte auslesen da ich die Objekte ja direkt mit dem Index des Array ansprechen kann, also Sprich


```
for (int i = 0; i < array.lenth; i++){
sum += array.[i].getSaldo;
}
```
Ich habe in den zur Verfügung stehenden Methoden der Arraylist irgendwie nichts gefunden was mir weiterhelfen könnte. Soweit ich das verstanden habe kann ich was hinzufügen, ungebrauchtes löschen, schauen ob sich ein Objekt bereits darin befindet?

Ich hätte mir jetzt gedacht das es eine Methode gibt wo ich die Konten-Objekte absuchen kann nach einem Variablennamen (welcher definiert ist in der Klasse Konten, z.b. Kontostand) und dann einen Wert zurückkriege und diesen nur noch addieren muss.

Referenz: java.util.ArrayList

Aber so wie ich dem Link entnehmen konnte kriege ich entweder einen Boolean zurück, oder einen int der mir die Menge an Objekten angibt. 

Wo liegt mein Denkfehler? Wie kann ich auf Objekte in einer Arraylist zugreifen?

Hoffe habe mich verständlich ausgedrückt, vielen dank für eure Hilfe im Vorraus 


PS: einen schön verschneiten guten Morgen an alle


----------



## Saturas (29. Okt 2012)

Sowas vielleicht?


```
for (int i = 0; i < list.size(); i++) {
    sum += list.get(i).getSaldo();
}
```


----------



## Lazaii (29. Okt 2012)

uff... ich denke das war jetzt grad meine erste Reaktion.. :shock:

dann folgte in etwa das ;( und zu guter letzt :lol:


Ich kann momentan schwer einschätzen ob ich einen Abdruck vom Tisch im Gesicht habe, oder der Tisch einen Abdruck des Gesichtes.. hehe.. Scheint genau das zu sein was ich eigentlich gesucht habe gestern Abend.. Menno...

Vielen Dank, ich werds heute nach dem Arbeiten gleich ausprobieren .. :toll:


----------



## faetzminator (29. Okt 2012)

Zur Vollständigkeit noch die extended for loop / for-each:

```
for (Konten konto : list) {
    sum += konto.getSaldo();
}
```
Kann man immer verwenden, wenn man den Index nur benötigt, um über die Elemente zu iterieren.

Du solltest deine Klasse [c]Konto[/c] und nicht [c]Konten[/c] nennen, denn ein Objekt von ihr spezifiziert ein Konto, und nicht mehrere Konti.


----------



## Lazaii (29. Okt 2012)

faetzminator hat gesagt.:


> ```
> for (Konten konto : list) {
> sum += konto.getSaldo();
> }
> ```



Danke, dass mit den Klassennamen werde ich auch anpassen.

Betreffend der erweiterten for-Schalufe. Ich habe die glaube ich noch nicht ganz 100 pro verstanden. Ist das richtig das ich in dem Fall aus der Klasse "Konten", alle "konto" Objekte suche welche sich in der Arrayliste mit dem namen "list" verstecken?

Sobald ich ein Konto-Objekt gefunden habe wird darauf die Methode getSaldo() aufgerufen und in die Variable sum geschrieben?

Brauche ich diese <List> nicht so zu schreiben? (diese "<" und ">")


----------



## Saturas (29. Okt 2012)

Bei der erweiterten for-Schleife werden alle "Konten"-Objekte der Liste list nacheinander genommen. Also genau wie die Schleife bei mir, erspart also einfach Schreibaufwand.

Und die "list" ist deine ArrayList, also 

```
List<Konten> list = new ArrayList<Konten>();
```


----------



## Lazaii (30. Okt 2012)

Vielen Dank, es funktioniert alles wie es soll


----------

