В Hashmap хэш-код предоставленного ключа используется для размещения значения в хэш-таблице. В Hashset используется hashcode объектов, чтобы поместить значение в базовую хэш-таблицу. то есть преимущество хэшмапа в том, что у вас есть гибкость в выборе того, что вы хотите в качестве ключа, чтобы вы могли делать такие приятные вещи.
Map<String,Player> players = new HashMap<String,Player>();
Это может отображать строку, такую как имя игрока, самому игроку.
Мой вопрос заключается в том, что происходит с поиском, когда изменяется ключ Hashcode.
Я ожидаю, что это не такая серьезная проблема для Hashmap, как я бы не ожидал и не хотел, чтобы ключ менялся. В предыдущем примере, если имена игроков изменяются, он больше не является игроком. Однако я могу посмотреть на игрока, используя изменение ключа. Другие поля, которые не являются именем, и будущие поисковые запросы будут работать.
Однако в Hashset, поскольку весь объект hashcode используется для размещения элемента, если кто-то слегка изменяет объект, будущие поиски этого объекта больше не будут разрешаться к одной и той же позиции в Hashtable, поскольку он полагается на все объекты Hashcode. Означает ли это, что, как только данные находятся в Hashset, его не следует изменять. Или нужно его перефразировать? или это делается автоматически и т.д.? Что происходит?