Todos estos objetos deben tener una clase abstracta/interfaz común como Alive
con un método getLifeTime()
, y usted podría tener ya sea Alive
extiende Comparable<Alive>
o crea tu propio 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
}
}
O
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
}
}
Después de que el siguiente paso es utilizar una colección ordenada de forma automática (TreeSet<Alive>
) u ordenar un List<Alive>
con Collections.sort()
.
Recursos:
Si implementa 'Alive.compareTo', debe implementarlo correctamente, es decir, realmente comparar las vidas de los dos objetos en lugar de devolver 0. De lo contrario, necesitaría una implementación (básicamente duplicada) en cada subclase concreta. –
@ Péter Török, no he hecho la implementación porque no sé el orden deseado. Y realmente no tienes que volver a escribirlo en todas las subclases, esta es la razón por la que utilicé una clase abstracta en la primera parte y no una interfaz y también por qué dejé este largo comentario en la línea 'return 0'. –
Lo sentimos, el comentario de su código no fue claro en esto (al menos para mí); por eso pensé que era mejor agregar un comentario aclaratorio :-) –