Sobes.tech
Junior

Wat is het verschil tussen Comparator en Comparable?

sobes.tech AI

Antwoord van AI

Comparable wordt gebruikt om de "natuurlijke" sorteervolgorde voor een klasseobject te bepalen. Het implementeert de interface Comparable<T> en biedt de methode compareTo(T o).

Comparator wordt gebruikt om één of meerdere alternatieve sorteervolgorden te definiëren. Het implementeert de interface Comparator<T> en biedt de methode compare(T o1, T o2).

De belangrijkste verschillen worden weergegeven in de tabel:

Kenmerk Comparable Comparator
Interface java.lang.Comparable<T> java.util.Comparator<T>
Sorteermethode compareTo(T o) compare(T o1, T o2)
Toepassing Binnen de klasse van het object Losse klasse of lambda
Logica locatie In de klasse zelf Op een aparte plek
Aantal ordeningen Alleen één "natuurlijke" ordening Meerdere alternatieven
Klassenwijziging Vereist wijziging van de klasse Vereist geen wijziging van de klasse

Voorbeeld van het gebruik van Comparable:

// Klasse die Comparable implementeert voor sortering op naam
class Person implements Comparable<Person> {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Person other) {
        // Vergelijking op naam
        return this.name.compareTo(other.name);
    }

    @Override
    public String toString() {
        return "Person{" +
               "name='" + name + '\'' +
               ", age=" + age +
               '}';
    }
}

Voorbeeld van het gebruik van Comparator:

// Comparator voor sortering op leeftijd
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // Vergelijking op leeftijd
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}