Junior — Middle
Jaký je rozdíl mezi rozhraními Comparator a Comparable v Java?
sobes.tech AI
Odpověď od AI
V Javě se rozhraní Comparable a Comparator používají k porovnávání objektů, ale mají různé účely:
-
Comparable — definuje přirozené pořadí objektů. Třída implementuje toto rozhraní, aby bylo možné objekty porovnávat pomocí metody
compareTo(). Obvykle se používá pro výchozí řazení. -
Comparator — je samostatný objekt, který stanoví alternativní způsob porovnávání dvou objektů. Používá se, když je třeba řadit objekty podle různých kritérií nebo když třída
Comparableneimplementuje.
Příklad:
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // přirozené pořadí podle jména
}
}
// Comparator pro řazení podle věku
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
Tímto způsobem Comparable stanoví jeden způsob porovnání uvnitř třídy, zatímco Comparator umožňuje vytvářet více externích způsobů porovnání.