HashMap как она работает

 
 
 
Сообщения:22
Здравствуйте всем)

Очень стыдно, но походу я не очень представляю как работает HashMap. Понятно что в нее можно сложить объекты, присвоить объекту ключ, вычислить для него хеш и сложить в определенную ячейку. Но как вычисляется хеш, что какое-то количество объектов попадает в одну ячейку? Что в памяти происходит - что есть каждая ячейка?

Помогите пожалуйста, так хочется разобраться.
 
 
Сообщения:1339
Посмотрите какую-нибудь лекцию по алгоритмам по теме хеш-таблицы. Все станет понятно.

datatalks.ru - анализ данных, статистика, машинное обучение
 
 
Сообщения:2
elly:
Здравствуйте всем)

Очень стыдно, но походу я не очень представляю как работает HashMap. Понятно что в нее можно сложить объекты, присвоить объекту ключ, вычислить для него хеш и сложить в определенную ячейку. Но как вычисляется хеш, что какое-то количество объектов попадает в одну ячейку? Что в памяти происходит - что есть каждая ячейка?

Помогите пожалуйста, так хочется разобраться.


Читали статтю на хабре? Структуры данных в картинках. HashMap
 
 
Сообщения:9474
elly:
Но как вычисляется хеш
Хеш вычисляется из твоей функции hashCode(). Если ты ее не определил, то Java за тебя его по умолчанию определяет.
elly:
что какое-то количество объектов попадает в одну ячейку
Каждая ячейка - это массив объектов. От ключа вычисляется хеш код, из хеша вычисляется остаток от деления и выходит та ячейка в которую нужно положить объект. Если кол-во ячеек 8, то объекты с хеш кодом 0, 8, 16 попадут все в одну ячейку. При поиске соотвественно мапа должна пройтись по каждому и сравнить их уже на equals().
 
 
Сообщения:456
Староверъ:
Каждая ячейка - это массив объектов.

Наверное все таки не массив, а связный список.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет