В HashMap есть метод
final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { ...}
В котором выполняется проверка на уникальность ключа.
Для определения уникальности используется сравнение чисел оператором &. Соответственно вопрос:
Что именно выполняет оператор & между двумя числами?
12 & 0 //0
12 & 5 //4
12 & 12 //12
12 & 150 //4
15 & 67888795; //11
Ответ
Это побитовый оператор AND
00101010 42
& 00001111 15
--------------
00001010 10
Два числа представляются в двоичном виде. Затем оператором & сравниваются каждый бит двух чисел. Как работает оператор AND: если оба числа равны 1, то результат 1, если только один равен единице или оба нуля, то результат 0. Затем обратно из двоичного вида преобразуем в десятичный и получается обычное число.
Комментариев нет:
Отправить комментарий