Im tratando de aprender comparator en java y encontré este gran ejemplo en línea, mi pregunta es cómo se cambiaría este código para que los nombres de las mascotas se ordenan por edad y en orden descendente para que el más viejo sea el primero y el último sea el último ?comparador de java, ¿cómo ordenar por entero?
class Dog implements Comparator<Dog>, Comparable<Dog>{
private String name;
private int age;
Dog(){
}
Dog(String n, int a){
name = n;
age = a;
}
public String getDogName(){
return name;
}
public int getDogAge(){
return age;
}
// Overriding the compareTo method
public int compareTo(Dog d){
return (this.name).compareTo(d.name);
}
// Overriding the compare method to sort the age
public int compare(Dog d, Dog d1){
return d.age - d1.age;
}
}
public class Example{
public static void main(String args[]){
// Takes a list o Dog objects
List<Dog> list = new ArrayList<Dog>();
list.add(new Dog("Shaggy",3));
list.add(new Dog("Lacy",2));
list.add(new Dog("Roger",10));
list.add(new Dog("Tommy",4));
list.add(new Dog("Tammy",1));
Collections.sort(list);// Sorts the array list
for(Dog a: list)//printing the sorted list of names
System.out.print(a.getDogName() + ", ");
// Sorts the array list using comparator
Collections.sort(list, new Dog());
System.out.println(" ");
for(Dog a: list)//printing the sorted list of ages
System.out.print(a.getDogName() +" : "+
a.getDogAge() + ", ");
}
}
Esto ciertamente no es un buen ejemplo, usando un perro para comparar las edades de los otros dos es increíblemente mal diseño. No importa si esto es solo un pequeño ejemplo de cómo puede funcionar esto. Le da a las personas ideas equivocadas sobre cómo implementar estas interfaces correctamente. – Cephalopod