// 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 不修改原始类,原始类实际上也被修改了,这不是真的吗?
可能是我没有正确理解这个概念,请赐教。
最佳答案
Comparable
只能在原始类上实现,因此它只能有一个实现(除非您使用子类覆盖 compareTo
)。同时,Comparator
不需要在原始类上实现,所以可以有很多实现。
您的第二种情况与第一种情况完全不同,因为 compare
将可以访问三个 Dog
实例(this
,参数 # 1 和参数 #2),而 compareTo
只能访问两个 Dog
实例(this
和参数 #1)。
关于java - 说 "Comparable affects the original class but Comparator doesnt"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45250352/