Ich habe eine Klasse Auto:
Code:
package de.Auto;
public class Auto implements Comparable<Auto> {
private String marke;
private String baujahr;
private String farbe;
public String getMarke() {
return marke;
}
public void setMarke(String marke) {
this.marke = marke;
}
public String getBaujahr() {
return baujahr;
}
public void setBaujahr(String baujahr) {
this.baujahr = baujahr;
}
public String getFarbe() {
return farbe;
}
public void setFarbe(String farbe) {
this.farbe = farbe;
}
public String toString() {
return this.marke + ", " + this.farbe + ", " + this.baujahr;
}
@Override
public int compareTo(Auto auto) {
if (auto.toString() == null && this.toString() == null) {
return 0;
}
if (this.toString() == null) {
return 1;
}
if (auto.toString() == null) {
return -1;
}
return 0;
}
}
Und eine Klasse AutoListe:
Code:
package de.Auto;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class AutoListe extends ArrayList<Auto> {
private static final long serialVersionUID = 1L;
private List<Auto> autoListe;
public AutoListe() {
autoListe = new ArrayList<Auto>();
}
public void sortByToString() {
Collections.sort(autoListe, newAscAutoComparator());
}
protected static Comparator<Auto> newAscAutoComparator() {
return new Comparator<Auto>() {
@Override
public int compare(Auto arg0, Auto arg1) {
return arg0.toString().compareTo(arg1.toString());
};
};
}
}
Allerdings funktioniert das Sortieren nicht. Er springt gar nicht erst in die Methode public int compare() rein, wenn ich die Methode sortByToString() aufrufe. Was mache ich da noch falsch?