Sobes.tech
Junior — Middle

რისი ტიპის ობიექტებს შეიძლება დაამატოთ TreeSet-ში?

sobes.tech AI

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

TreeSet-ში მხოლოდ იმ ობიექტები შეიძლება დაემატოს, რომლებიც ან ახორციელებენ Comparable ინტერფეისს, ან TreeSet-ის შექმნის დროს განსაზღვრულია შედარების მექანიზმი (Comparator). ეს აუცილებელია, რათა ელემენტები შეძლონ სორტირება, რადგან TreeSet ინახავს ელემენტებს სორტირებულ სახით.

თუ ობიექტები არ ახორციელებენ Comparable-ს და Comparator-ი არ არის მითითებული, ელემენტის დამატების მცდელობაზე გამოიწვევს ClassCastException-ს.

მაგალითი:

TreeSet<String> set = new TreeSet<>(); // String ახორციელებს `Comparable`-ს
set.add("ვაშლი");
set.add("ბანანი");

// პერსონალური კლასი:
class Person implements Comparable<Person> {
    String სახელი;
    public Person(String სახელი) { this.სახელი = სახელი; }
    @Override
    public int compareTo(Person სხვა) {
        return this.სახელი.compareTo(სხვა.სახელი);
    }
}

TreeSet<Person> ადამიანები = new TreeSet<>();
ადამიანები.add(new Person("ალისა"));
ადამიანები.add(new Person("ბობ"));

ან Comparator-ით:

TreeSet<Person> ადამიანები = new TreeSet<>(Comparator.comparing(p -> p.სახელი));
ადამიანები.add(new Person("ალისა"));
ადამიანები.add(new Person("ბობ"));