Ключевая разница - TreeSet и HashSet
Большинство языков программирования поддерживают массивы. Это структура данных, которая используется для хранения нескольких элементов одного и того же типа данных. Если есть массив, объявленный для шести элементов, то его нельзя использовать для хранения десяти элементов. Следовательно, массивы не являются динамическими и не могут изменить размер массива после его объявления. Языки программирования, такие как Java, поддерживают коллекции, которые используются для динамического хранения данных. Коллекции поддерживают такие операции, как добавление элементов и удаление элементов. В иерархии коллекций есть ряд интерфейсов и классов. Базовым интерфейсом является интерфейс Collection. Set - это интерфейс, расширяющий интерфейс Collection. Он не допускает дублирования. TreeSet и HashSet - это два класса в иерархии Collection, и оба реализуют интерфейс Set. TreeSet - это класс, который реализует интерфейс Set и используется для хранения уникальных элементов в порядке возрастания. HashSet - это класс, который реализует интерфейс Set и используется для хранения уникальных элементов с использованием механизма хеширования. Основное различие между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в порядке возрастания, а HashSet не хранит элементы в порядке возрастания. И TreeSet, и HashSet хранят только уникальные элементы.
Что такое TreeSet?
Класс TreeSet реализует интерфейс NavigableSet. Интерфейс NavigableSet расширяет интерфейсы SortedSet, Set, Collection и Iterable в иерархическом порядке. TreeSet всегда поддерживает восходящий порядок. Если элементы были вставлены в порядке B, A, C, они будут сохранены как A, B, C. С объектом TreeSet можно использовать такие методы, как add(), remove(). Метод add может использоваться для добавления элемента. Метод remove используется для удаления элемента из коллекции. Это некоторые методы, которые можно использовать с TreeSet.
Рисунок 01: Программа с TreeSet
По приведенной выше программе создается объект типа TreeSet. Строковые элементы данных добавляются к этому объекту с помощью метода add. Порядок вставки данных: A, D, A, B, C, D. Используя итератор, сохраненные значения выводятся на экран. Результатом является A, B, C, D. Несмотря на то, что есть две буквы A и две буквы D, на выходе отображается одна буква A и одна буква D. Таким образом, TreeSet хранит уникальные элементы. Определенного порядка вставки нет, но при просмотре вывода видно, что TreeSet поддерживает восходящий порядок элементов.
Что такое HashSet?
Класс HashSet расширяет класс AbstractSet, который реализует интерфейс Set. Интерфейс Set наследует интерфейсы Collection и Iterable в иерархическом порядке. В HashSet нет гарантии, что элементы сохранят порядок возрастания и порядок вставки. Если вставленный порядок был A, B, C, тогда значения могут быть сохранены как C, A, B. Порядок хранения также может быть A, B, C, но нет гарантии, что вставленный порядок или восходящий порядок будет сохранен.
Рисунок 02: Программа с HashSet
По приведенной выше программе создается объект типа HashSet. Строковые элементы данных добавляются к этому объекту с помощью метода add. Порядок вставки данных: L, R, M, M, R, L. Используя итератор, сохраненные значения выводятся на экран. Вывод R L M. Несмотря на то, что есть две буквы L, R и M от каждого, отображается только одна буква от каждого. Поэтому HashSet хранит уникальные элементы. При наблюдении за выводом видно, что восходящий порядок отсутствует или сохраняется вставленный порядок.
Каковы сходства между TreeSet и HashSet?
- И TreeSet, и HashSet являются классами, принадлежащими иерархии коллекций.
- И TreeSet, и HashSet хранят только уникальные элементы.
- И TreeSet, и HashSet могут использоваться для хранения множества элементов и управления ими.
- И TreeSet, и HashSet не поддерживают вставленный порядок.
В чем разница между TreeSet и HashSet?
TreeSet против HashSet |
|
TreeSet - это класс в иерархии коллекций, который используется для хранения уникальных элементов в порядке возрастания. | HashSet - это класс в иерархии коллекций, который используется для хранения уникальных элементов с использованием механизма хеширования. |
Сохранение элементов | |
TreeSet хранит элементы в порядке возрастания. | HashSet не хранит элементы в порядке возрастания. |
Резюме – TreeSet против HashSet
В программировании требуется динамическое хранение элементов данных. Языки программирования, такие как Java, поддерживают коллекции для решения этой задачи. В иерархии коллекций есть ряд интерфейсов и классов. TreeSet и HashSet - это два класса в иерархии Collection. Оба реализуют интерфейс Set. TreeSet - это класс, который реализует интерфейс Set и используется для хранения уникальных элементов в порядке возрастания. HashSet - это класс, который реализует интерфейс Set и используется для хранения уникальных элементов с использованием механизма хеширования. Разница между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в порядке возрастания, а HashSet не хранит элементы в порядке возрастания. В этой статье обсуждалась разница между TreeSet и HashSet.