Sobes.tech
Junior

რა განსხვავებაა Comparator და Comparable-ს შორის?

sobes.tech AI

პასუხი AI-სგან

Comparable გამოიყენება ობიექტის კლასისთვის "საბუნებრივი" სორტირების წესის განსაზღვრად. იგი ახორციელებს Comparable<T> ინტერფეისს და უზრუნველყოფს მეთოდს compareTo(T o).

Comparator გამოიყენება ერთ ან რამდენიმე ალტერნატიული სორტირების წესის განსაზღვრად. იგი ახორციელებს Comparator<T> ინტერფეისს და უზრუნველყოფს მეთოდს compare(T o1, T o2).

ძირითადი განსხვავებები წარმოდგენილია ცხრილში:

მახასიათებელი Comparable Comparator
ინტერფეისი java.lang.Comparable<T> java.util.Comparator<T>
სორტირების მეთოდი compareTo(T o) compare(T o1, T o2)
გამოყენება ობიექტის კლასის შიგნით ცალკე კლასი ან ლამბდა
ლოგიკის განთავსება კლასში ცალკე ადგილას
წესების რაოდენობა მხოლოდ ერთი "საბუნებრივი" წესით მრავალი ალტერნატიული წესით
კლასი ცვლილება ცვლილებას მოითხოვს ცვლილებას არ მოითხოვს

Comparable გამოყენების მაგალითი:

// კლასი, რომელიც ახორციელებს Comparable-ს სახელის მიხედვით სორტირებისთვის
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) {
        // სახელის მიხედვით შედარება
        return this.name.compareTo(other.name);
    }

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

Comparator გამოყენების მაგალითი:

// ასაკის მიხედვით სორტირებისთვის Comparator
import java.util.Comparator;

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // ასაკის მიხედვით შედარება
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}