Junior — Middle
Kāda ir atšķirība starp Java interfeisiem Comparator un Comparable?
sobes.tech AI
Atbilde no AI
Java valodā interfeisi Comparable un Comparator tiek izmantoti, lai salīdzinātu objektus, taču tiem ir dažādi mērķi:
-
Comparable — nosaka objektu dabisko kārtību. Klase realizē šo interfeisu, lai objekti varētu tikt salīdzināti ar
compareTo()metodi. Parasti tas tiek izmantots noklusējuma kārtošanai. -
Comparator — ir atsevišķs objekts, kas nosaka alternatīvu veidu, kā salīdzināt divus objektus. To izmanto, ja nepieciešams kārtot objektus pēc dažādiem kritērijiem vai ja klase neīsteno
Comparable.
Piemērs:
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // dabiskā kārtība pēc vārda
}
}
// Comparator pēc vecuma
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
Tādējādi, Comparable nosaka vienu salīdzināšanas veidu klasē, bet Comparator ļauj izveidot vairākus ārējos salīdzināšanas veidus.