Как HashMap
внутренне различают null
и 0
как ключ.HashMap, имеющий нуль как ключ
В соответствии с этим post хеш-код для null
ключ 0
, все верно? Если да, то оба должны идти в одном ковше по индексу 0
, и должно быть одно значение в HashMap
, но это не так, как работает HashMap
.
Может ли кто-нибудь объяснить мне? хеш-код для null
ключ в HashMap
?
Пример кода:
HashMap<Integer,String> map=new HashMap<Integer,String>();
map.put(null, "abc");
map.put(0, "xyz"); // will it override the value for null as key?
System.out.println(map.get(null)); // abc
System.out.println(map.get(0)); // xyz
Хэш-коды не уникальны - не имеет значения, что хеш-код для 'null' равен' 0' или любому другому значению. Для хэш-кода в хэш-карте нет значения. – Jesper
@Jesper Будет ли он проверять значение 'equals()', если 'hashCode()' возвращает одно значение? Если да, то как это будет работать в этом случае? – Braj
Да, но 'null', конечно, обрабатывается особым образом, чтобы избежать возникновения ошибки NullPointerException. Если вы действительно хотите узнать все детали реализации, найдите исходный код 'HashMap', который вы можете найти в' src.zip' в каталоге установки JDK. – Jesper