Я пытаюсь изучить компаратор в java, и я нашел этот отличный пример онлайн, мой вопрос заключается в том, как изменить этот код, чтобы имена животных упорядочивались по возрасту и в порядке убывания, так что самый старый является первым, а младший - последним ?Java-компаратор, как сортировать по целому числу?
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() + ", ");
}
}
Это, безусловно, не является хорошим примером, используя одну собаку, чтобы сравнить возраст двух других невероятно плохой дизайн. Не имеет значения, является ли это всего лишь небольшим примером того, как это может работать. Это дает людям неправильные идеи о том, как правильно реализовать эти интерфейсы. – Cephalopod