Alle diese Objekte sollten eine gemeinsame abstrakte Klasse/Schnittstelle haben wie Alive
mit einem Verfahren getLifeTime()
, und man konnte entweder Alive
erstreckt Comparable<Alive>
oder Erstelle deine eigene Comparator<Alive>
.
public abstract class Alive extends Comparable<Alive>{
public abstract int getLifeTime();
public int compareTo(Alive alive){
return 0; // Or a negative number or a positive one based on the getLifeTime() method
}
}
Oder
public interface Alive {
int getLifeTime();
}
public class AliveComparator implements Comparator<Alive>{
public int compare(Alive alive1, Alive alive2){
return 0; // Or a negative number or a positive one based on the getLifeTime() method
}
}
Danach ist der nächste Schritt entweder eine automatisch sortierte Sammlung zu verwenden ist (TreeSet<Alive>
) oder ein mit List<Alive>
Collections.sort()
sortieren.
Ressourcen:
Wenn Sie 'Alive.compareTo' implementieren, sollten Sie es richtig implementieren, dh vergleichen Sie die Lebensdauern der beiden Objekte, anstatt 0 zurückzugeben. Andernfalls würden Sie in jeder konkreten Unterklasse eine (im Grunde doppelte) Implementierung benötigen. –
@ Péter Török, ich habe die Implementierung nicht gemacht, weil ich die gewünschte Bestellung nicht kenne. Und Sie müssen es wirklich nicht in jeder Unterklasse neu schreiben, das ist der Grund, warum ich eine abstrakte Klasse im ersten Teil und nicht eine Schnittstelle verwendet habe und auch, warum ich diesen langen Kommentar auf der Zeile "return 0" gelassen habe. –
Entschuldigung, Ihr Code-Kommentar war nicht klar (zumindest für mich); deshalb dachte ich, es wäre besser, einen klärenden Kommentar hinzuzufügen :-) –