Можно ли byte[] как ключ HashMap?

Ответ

Технически можно, но hashCode у массива — по адресу (identityHashCode), а equals — по ссылке. Два одинаковых по содержимому массива дадут разные хэши. Нужно обернуть в ByteBuffer или свой класс с переопределёнными equals/hashCode.

Разбор: У массивов hashCode/equals унаследованы от Object (по ссылке/идентичности), поэтому одинаковые по содержимому массивы дают разные хэши и не находятся в HashMap — нужен ByteBuffer или обёртка с переопределёнными equals/hashCode. Дистракторы ложно приписывают массивам value-семантику, выдумывают запрет компилятора (Comparable для ключей не требуется) или предлагают Arrays.sort, который не меняет логику hashCode.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться