Как работает HashMap под капотом?

Middle
468 просмотров
AFK Offer AI

HashMap хранит пары ключ-значение в массиве бакетов. При put() вычисляется hash ключа, определяется индекс бакета (hash & (length-1)). При коллизии (два ключа в одном бакете) элементы складываются в связный список, а с Java 8 при 8+ элементах список превращается в красно-чёрное дерево (O(log n) вместо O(n)). При load factor 0.75 происходит resize — массив удваивается, все элементы перехешируются. HashMap не потокобезопасен.

Следующий вопрос

В чём разница между == и equals() в Java?