|
Seit Java 5 gibt es die ArrayList, die gegenüber dem Array den Vorteil hat, dass sie jederzeit vergrößert oder verkleinert werden kann. Desweiteren benötigt die ArrayList als normales Java-Objekt keine besondere Array-Syntax.
ArrayList-Beispiele mit einer Auto- und einer Testklasse
public class Auto {
String farbe="";
int kW=0;
Auto(String farbe, int kW) {
this.farbe=farbe;
this.kW=kW;
}
public void showAuto() {
System.out.println("Farbe: " + farbe + ", Leistung: " + kW);
}
}
import java.util.ArrayList; // Einbinden der ArrayList aus der java-api
public class Test {
public static void main(String[] args) {
ArrayList<Auto> autoListe = new ArrayList<Auto>(); // Liste nur für Auto-Objekte
Auto a1 = new Auto("rot", 55); // Auto-Objekt erzeugen
Auto a2 = new Auto("schwarz", 75);
Auto a3 = new Auto("gruen", 50);
autoListe.add(a1); // Auto-Objekt in autoListe
autoListe.add(a2);
autoListe.add(a3);
System.out.println(autoListe.size()); // 3 Objekte enthalten
System.out.println(autoListe.indexOf(a1)); // Objekt a1 liegt an Position 0
System.out.println(autoListe.contains(a3)); // true, weil Objekt enthalten
autoListe.remove(a3);
System.out.println(autoListe.contains(a3)); // false, weil Objekt gelöscht
System.out.println(autoListe.get(0).farbe); // farbe des Objekts a1 über index (rot)
System.out.println(autoListe.get(autoListe.indexOf(a1)).farbe); // rot (Zugriff über Objektname)
for (Auto aktuellesAuto : autoListe) { // alle Objekte aus der Liste anzeigen
aktuellesAuto.showAuto(); // Farbe: rot, Leistung: 55
// Farbe: schwarz, Leistung: 75
}
}
}
Sortieren der ArrayList "autoListe" nach Kilowatt
Zum Sortieren der ArrayList bietet sich die Klasse java.util.Collections und dort die Methode "sort" an. Bei der Sortierung von eigenen Objekten muß die sort-Methode aber wissen, nach welchem Kriterium sortiert werden soll. Deshalb muss die zu sortierende Klasse das Interface Comparable implementieren das wiederum das Überschreiben der Methode "compareTo(T o)" erzwingt (also Methode anlegen und mit Code ergänzen).
public class Auto implements Comparable<Auto>{
// Interface einbauen, das die Implementierung von compareTo() erfordert
String farbe="";
int kW=0;
Auto(String farbe, int kW) {
this.farbe=farbe;
this.kW=kW;
}
public void showAuto() {
System.out.println("Farbe: " + farbe + ", Leistung: " + kW);
}
@Override
public int compareTo(Auto o) {
return ((Integer)kW).compareTo((Integer)o.kW);
// return ((String)farbe).compareTo((String)o.farbe); // alternativ nach farbe sortieren
}
}
import java.util.ArrayList;
import java.util.Collections; // Collections importieren, damit u.a. "sort" genutzt werden kann
public class Test {
public static void main(String[] args) {
ArrayList<Auto> autoListe = new ArrayList<Auto>();
Auto a1 = new Auto("rot", 55);
Auto a2 = new Auto("schwarz", 75);
Auto a3 = new Auto("gruen", 50);
autoListe.add(a1);
autoListe.add(a2);
autoListe.add(a3);
Collections.sort(autoListe); // autoListe aufsteigend sortieren
for (Auto aktuellesAuto : autoListe) {
aktuellesAuto.showAuto(); // Farbe: gruen, Leistung: 50
// Farbe: rot, Leistung: 55
// Farbe: schwarz, Leistung: 75
}
Collections.reverse(autoListe); // andersrum sortieren (75,55,50)
for (Auto aktuellesAuto : autoListe) {
aktuellesAuto.showAuto();
}
}
}
|