|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.06.2018, 22:00 | #1 |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
HashMap
поясните мне про побитовый сдвиг, как вычисляется индекс понять не могу(((
поясните плиз что происходит в этой строчке: (h = key.hashCode()) ^ (h >>> 16) хочу понять основы ^ - вот это что означает? h ^= (h >>> 20) ^ (h >>> 12); - и поясните что тут происходит "^=" - это вроде отрицание, не равно чему? блин помогите разобраться
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
17.06.2018, 22:03 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Так а чего там объяснять? Биты сдвигает.
А ^ это xor.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
17.06.2018, 22:09 | #3 |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
чёт не пойму получается
h ^= (h >>> 20) ^ (h >>> 12); - не равно чемуто или чемуто? а вот в этой строчке: static final int hash(Object key) { return: (h = key.hashCode()) ^ (h >>> 16) к примеру если подставить Integer key = 124256; (h = key.hashCode()) ^ (124256 >>> 16) - вот скажите что тут происходит как вы понимаете?
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
17.06.2018, 22:16 | #4 |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
static final int hash(Object key) {
int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); } т.е. если key нулл тогда вернуть 0, если key не null тогда h равен хешкоду ключа или хешкоду глюча чёто тама 16 .. блин ну обясните я не понял
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
18.06.2018, 07:17 | #5 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
А книжку про операторы открыть слабо? Это сокращеная запись для h = h ^ ...
Цитата:
где вы видели второе присваивание h? или условное присваивание? не выдумывайте, а читайте как есть по порядку. скобки, как в школе ограничивают и разделяют выражения. |
|
20.06.2018, 10:22 | #6 |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
так давайте ещё разик
Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор ___________________________ вот этот метод вычилсяет индекс в хеш мапе я правильно понял? ксор это у нас или т.е. мы тут проверяем если кей равену нулл то вернуть 0 если кей не равен нулл то h = key.hashCode() или h побитовый сдвиг на 16 т.е. если предположить что хешкод равен 2338892 то ответ получится 2338927 т.е. 2338927 - это же не индекс!? b tckb и если мы предположим что размер нашей хешмапы равен 20, то куда в какой индекс мы поместим наш ключ?
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
20.06.2018, 10:30 | #7 |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
и ели не ошибусь то начальный размер мапы равен 16 , вот куда мы будем вставлять ключ с таким индексом?
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
20.06.2018, 10:31 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
20.06.2018, 10:33 | #9 |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
может ссылочку дадите кде почитать развёрнутый ответ на данный вопрос а то я когда ищу то я нахожу ответы - как получить индекс получив остаток от деления на длинну вложенного массива если к примеру длинна вложенного массива круглое число и постоянно увеличивается в 10. где прочитать про другую версию?
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
20.06.2018, 10:35 | #10 | |
Форумчанин
Регистрация: 20.11.2008
Сообщений: 121
|
Цитата:
везде про это только и пишут
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Достать значения JSON из HashMap | yura91 | Java Мобильная разработка (Android) | 2 | 09.07.2016 19:25 |
Java и HashMap | OlgaLenc | Помощь студентам | 0 | 10.12.2014 13:44 |
Работа с HashMap<> (java) | 803 | Помощь студентам | 0 | 23.12.2013 19:29 |
Hashmap | Артем533 | Общие вопросы по Java, Java SE, Kotlin | 2 | 25.11.2012 00:17 |