Sobes.tech
Junior — Middle

Kuo skiriasi Java interfeisai Comparator ir Comparable?

sobes.tech AI

Atsakymas iš AI

Java kalboje Comparable ir Comparator sąsajos naudojamos objektų palyginimui, tačiau turi skirtingus tikslus:

  • Comparable — apibrėžia objektų natūralųjį tvarką. Klasė įgyvendina šią sąsają, kad objektai galėtų būti lyginami naudojant metodą compareTo(). Paprastai naudojama numatytojo rūšiavimo tikslais.

  • Comparator — yra atskiras objektas, kuris nustato alternatyvų būdą palyginti du objektus. Naudojama, kai reikia rūšiuoti objektus pagal skirtingus kriterijus arba kai klasė neįgyvendina Comparable.

Pavyzdys:

class Person implements Comparable<Person> {
    String name;
    int age;

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // natūralusis tvarkas pagal vardą
    }
}

// Comparator pagal amžių
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Taip Comparable nustato vieną būdą palyginti objektus klasės viduje, o Comparator leidžia kurti daugybę išorinių palyginimo būdų.