Что такое коллизии

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

Ответ

Коллизии возникают, когда разные данные дают одинаковый хеш-код. В HashMap это приводит к тому, что несколько объектов попадают в одну корзину (bucket).

Как обрабатываются:

  1. При коллизии элементы хранятся в виде связного списка (до Java 8)
  2. В Java 8+ при достижении порога (обычно 8 элементов) список преобразуется в сбалансированное дерево для улучшения производительности с O(n) до O(log n)

Пример:

Map<String, String> map = new HashMap<>();
map.put("Aa", "1");  // Хеш 2112
map.put("BB", "2");  // Тот же хеш 2112 -> коллизия

Как избежать:

  • Правильно реализовывать hashCode() и equals()
  • Использовать хорошие хеш-функции с равномерным распределением