ArrayList durchzählen

Xerxess81

Grünschnabel
Ich wollte einmal wissen, ob es möglich ist eine ArrayList durchzuzählen, ähnlich wie ein normales Array, also in der Art von:
Code:
for (int i = 0; i <Array.length(); i++)
{
        array[i];
}

Lässt sich sowas auch mit einer Liste verwirklichen? Ich glaube ja schon das es geht, aber ich bin wohl gerade zu Blind zum suchen.... : - /
 

Oliver Gierke

Erfahrenes Mitglied
Code:
List<String> foo = new ArrayList<String>();

// befüllen

for (String element : foo) {
  // foo ist das jeweilige element
}

Meinst du sowas?
REINHAUN!
 
Hallo,

natürlich geht das, zum Beispiel mit einem Iterator:
Java:
for (Iterator it = theList.iterator(); it.hasNext(); ) {
    Object o = it.next();
    // ...
}
Oder kürzer mit foreach
Java:
foreach (Object o : theList) {
    // ...
}

Grüße,
Matthias
 

zerix

Hausmeister
Moderator
Hallo,

die kürzeste Lösung ist aber nicht immer die beste. :)

Die Iterator-Lösung ist recht langsam. Die schnellste Möglichkeit ist diese.

Code:
List list = new ArrayList();

for(int i = 0, size = list.size(); i < size; i++){

list.get(i);

}

Das wichtigste hier ist, dass du eine extra Variable hast, in der die Größe der Liste steht.
Code:
int i = 0, size = list.size()

Man könnte das ganze auch so lösen
Code:
for(int i = 0; i < list.size(); i++){

list.get(i);

}
Das ist aber langsamer, weil so die Größe der Liste bei jedem Schleifen-Durchlauf neu erfasst wird.

MFG

Sascha
 
die kürzeste Lösung ist aber nicht immer die beste. :)
Genau wie die schnellste Lösung nicht immer die beste ist. Tauscht man die ArrayList gegen eine LinkedList aus, kann der Zugriff über get ziemlich teuer werden. Sich auf die konkrete Implementierung einer Datenstruktur zu verlassen, halte ich generell für eine schlechte Idee.

Grüße,
Matthias
 
Zuletzt bearbeitet von einem Moderator:

zerix

Hausmeister
Moderator
Das gleiche machst du aber auch, da soweit ich weiß, der Iterator nur bei der LinkedList schneller ist. :)
Die Lösung die ich gepostet hab, ist nur bei der LinkedList langsamer. Also ist es bei den meisten Listen sinnvoller, eine "normale" for-Schleife zu nutzen. ;-)
Meiner Erfahrung nach, wird die LinkedList nicht sehr häufig genutzt.
Sie braucht mehr Speicher als die ArrayList, sie ist langsamer im Befüllen und die ArrayList ist mit der "normalen" Zählschleife eigentlich genauso schnell, wie die LinkedList bei der foreach.

MFG

Sascha