java.util.List

Transcription

java.util.List
Max Weller
java.util.List
Freitag, 1. Oktober 2010
11:57
Mit einer Liste kann man mehrere Variablen unter einem Namen speichern (wie mit einem Array)
Unterschied: bei einer Liste kann man dynamisch Elemente einfügen+löschen.
List ist ein Interface -- um eine zu erstellen, z.B. ArrayList verwenden
java.util.ArrayList lst = new java.util.ArrayList();
geht aus diesem Grund NICHT:
java.util.List lst = new java.util.List();
Anzahl der Elemente int elementCount = lst.size();
alle durchgehen
java.util.List lst = new java.util.ArrayList();
// Liste befüllen ...
Object obj;
for (int i = 0; i<lst.size(); i++) {
obj = lst.get(i);
// irgendwas mit obj anstellen -- je nach Typ
// wären in obj nur Strings gespeichert, könnte man …
String str = (String) lst.get(i);
// … und diesen ausgeben
System.out.println(str + "\n");
}
Einfacher - mit der ForEach-Schleife
java.util.List lst = new java.util.ArrayList();
// Liste befüllen …
for (Object obj : lst) {
// irgendwas mit obj anstellen -- siehe oben
}
Liste modifizieren
Object obj = "something";
int position = 42;
Neues Item einfügen:
Item an Position ersetzen:
Item löschen:
Ausleeren:
lst.add(obj);
lst.set(position, obj);
lst.remove(position);
lst.clear();
Element suchen
lst.contains(obj) gibt true aus, wenn das Element irgendwo in der Liste ist
lst.indexOf(obj) gibt den Index zurück, an welcher Stelle es in der Liste liegt
oder -1 wenn es nicht gefunden wurde
Beispiel: alle würmer durchgehen + nächsten finden
java.util.List worms = getWorld().getObjects(Worm.class);
Double curDist,dist=Double.MAX_VALUE;
Worm worm;
int x,y,idx=-1;
for (int i = 0; i<worms.size(); i++) {
worm = (Worm)worms.get(i);
if (!worm.getVisible()) continue;
x=worm.getX(); y= worm.getY();
curDist = getDistanceTo(x,y);
if (curDist<dist) {
idx=i; curDist=dist;
}
}
// Resultat: in idx steht der Index des nächstliegenden Wurmes
// mit worms.get(idx) erhält man ihn und kann dann hinwandern
// siehe Szenario intelli-crab