// Original class Dog
class Dog{
String name;
int age;
}
//Case 1
class Dog implements Comparable<Dog>{
//compareTo() implementation
}
//Case2
class Dog implements Comparator<Dog>{
// compare() implementation
}
//Case 3
class DogNameComparator implements Comparator<Dog>{
// compare() implementation
}
Collection.sort(dogList);
Collectios.sort(dogList,new DogNameComparator());
Collection.sort(dogList,new Dog());
在案例2中,即使他们说Comparator没有修改原始类,实际修改了原始类,这是不是真的?
如果我没有正确理解这个概念,可以启发我。
答案 0 :(得分:2)
Comparable
只能在原始类上实现,因此只能有一个实现(除非使用子类覆盖compareTo
)。同时,Comparator
不需要在原始类上实现,因此可以有许多实现。
您的第二种情况与第一种情况完全不同,因为compare
可以访问三个Dog
实例(this
,参数#1和参数#2),而compareTo
只能访问两个Dog
个实例(this
和参数#1)。