Sobes.tech
Junior — Middle

TreeSet-ə hansı obyekt növlərinin əlavə olunmasına icazə verilir?

sobes.tech Süni İntellekt

AI-dan cavab

В TreeSet можно вставлять только объекты, которые либо реализуют интерфейс Comparable, либо для которых при создании TreeSet задан компаратор (Comparator). Это необходимо, чтобы элементы можно было упорядочить, так как TreeSet хранит элементы в отсортированном виде.

Если объекты не реализуют Comparable и не передан Comparator, при попытке вставить элемент будет выброшено ClassCastException.

Пример:

TreeSet<String> set = new TreeSet<>(); // String реализует Comparable
set.add("apple");
set.add("banana");

// Для пользовательского класса:
class Person implements Comparable<Person> {
    String name;
    public Person(String name) { this.name = name; }
    @Override
    public int compareTo(Person other) {
        return this.name.compareTo(other.name);
    }
}

TreeSet<Person> people = new TreeSet<>();
people.add(new Person("Alice"));
people.add(new Person("Bob"));

Или с компаратором:

TreeSet<Person> people = new TreeSet<>(Comparator.comparing(p -> p.name));
people.add(new Person("Alice"));
people.add(new Person("Bob"));