junior
В чем отличия TreeSet и HashSet
HashSet хранит элементы в хэш-таблице (на основе HashMap), а TreeSet — в красно-черном дереве (на основе TreeMap). Это определяет их ключевые различия.
| Характеристика | HashSet | TreeSet |
|---|---|---|
| Порядок элементов | Не гарантирован | Отсортированный |
| Сложность add/remove/contains | O(1) среднее | O(log N) |
| null-элементы | Допускает (один) | Не допускает (NPE при сравнении) |
| Требование к элементам | hashCode() + equals() | Comparable или Comparator |
| Внутренняя структура | HashMap | TreeMap (красно-черное дерево) |
| Дополнительные методы | Нет | first(), last(), headSet(), tailSet(), subSet() |
TreeSet следует использовать, когда нужен отсортированный набор или операции с диапазонами (headSet, tailSet, subSet). В остальных случаях HashSet предпочтительнее благодаря O(1) операциям.
На собеседовании: сравните через таблицу. Ключевые отличия: порядок (нет vs отсортированный) и сложность (O(1) vs O(log N)).