В чем разница между HashSet и TreeSet

«В чем разница между HashSet и TreeSet» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HashSet и TreeSet – оба реализуют интерфейс Set, но работают по-разному:

  • HashSet:

    • Хранит элементы в хеш-таблице (основан на HashMap).
    • Порядок элементов не гарантируется.
    • Вставка, удаление и поиск – O(1) в среднем случае.
    • Использует hashCode() и equals() для сравнения.
  • TreeSet:

    • Хранит элементы в красно-черном дереве (основан на TreeMap).
    • Элементы сортируются (Comparable/Comparator).
    • Вставка, удаление и поиск – O(log n).

Пример:

val hashSet = hashSetOf(3, 1, 2) // [1, 2, 3] или другой порядок  
val treeSet = sortedSetOf(3, 1, 2) // [1, 2, 3] – всегда отсортировано  

Выбор зависит от необходимости сортировки и производительности.