Может ли быть коллизия у String

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

Ответ

Да, коллизия возможна. Хэш-код String в Java вычисляется по формуле:
h = 31 * h + charAt(i)

Хотя алгоритм хорошо распределяет значения, теоретически разные строки могут иметь одинаковый хэш (например, "FB" и "Ea" дают 2236).

Пример:

String s1 = "FB";
String s2 = "Ea";
System.out.println(s1.hashCode()); // 2236
System.out.println(s2.hashCode()); // 2236

На практике это редко вызывает проблемы, но важно учитывать при использовании String как ключа в HashMap.