Может ли кто-нибудь объяснить, как работает TreeSet, чтобы получить следующий результат? Спасибо.

import java.util.*;
public class Main {
    public static void main(String args[]) {
    Set<String> fructe = new TreeSet<>(Arrays.asList("mere", "pere", "banane", "mere", "kiwi", "ananas", "portocale"));
    System.out.println(fructe);
    }
}

[ananas, banane, kiwi, mere, pere, portocale]
-1
user16321566 5 Июл 2021 в 16:36

3 ответа

Лучший ответ

Для простоты вы можете рассматривать TreeSet как Set, в котором элементы уникальны .

Для получения дополнительной информации класс TreeSet расширяет SortedSet, Set, Collection и Iterable, как показано на изображении ниже. TreeSet

В результате элементы в TreeSet уникальны и отсортированы на основе реализованного алгоритма сортировки. Элементы TreeSet должны реализовывать Comparable и переопределять метод compareTo() , чтобы Java знала, как сравнивать элементы в дело в том, что они не примитивны.

Дополнительную информацию можно найти здесь.

Надеюсь, это поможет вам с вашей проблемой!

0
Tran Phong 5 Июл 2021 в 13:50

Реализация OpenJDK использует https://en.wikipedia.org/wiki/Red%E2%80% 93black_tree

Элементы упорядочиваются в их естественном порядке или с помощью компаратора, предоставленного во время создания набора, в зависимости от того, какой конструктор используется.

1
th30z 5 Июл 2021 в 13:42

TreeSet строк просто сохраняет строки в лексикографическом порядке . Лексикографический порядок такой же, как Порядок словаря , то есть способ, которым слова упорядочены в словаре. Две строки лексикографически равны, если они имеют одинаковую длину и содержат одинаковые символы в одинаковых позициях.

Если вам нужен другой результат, вы можете использовать собственный Comparator.

0
Mark Rotteveel 5 Июл 2021 в 14:01