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("ბობ"));