Почему String, Integer и другие классы-оболочки считаются хорошими ключами?
Я нашел ниже ответы -
String, Integer и другие классы-оболочки являются естественными кандидатами на ключ HashMap, а String также является наиболее часто используемым ключом, поскольку String является неизменяемым и окончательным и переопределяет методы equals и hashcode().
Другой класс-оболочка также имеет аналогичное свойство. Требуется неизменяемость, чтобы предотвратить изменения в полях, используемых для вычисления hashCode(), потому что, если ключевой объект возвращает другой hashCode во время вставки и извлечения, невозможно будет получить объект из HashMap. Неизменяемость лучше всего, поскольку она предлагает другие преимущества, а также безопасность потоков. Если вы можете сохранить свой хэш-код одинаковым, только сделав определенные поля окончательными, то вы также пойдете на это. Поскольку методы equals() и hashCode() используются при извлечении объекта значения из HashMap, важно, чтобы ключевой объект правильно переопределял эти методы и следовал контакту. Если неравный объект возвращает другой хэш-код, вероятность столкновения будет меньше, что впоследствии улучшит производительность HashMap.
Integer
класс обертываетint
,Boolean
класс обертываетboolean
и далее... - person Luiggi Mendoza   schedule 05.06.2014Integer
оборачивает значение примитивного типаint
в объект. Он есть в официальном javadoc. - person Luiggi Mendoza   schedule 05.06.2014Map<int,int>
? - person Boann   schedule 05.06.2014String
иInteger
и другие классы-оболочки считаются подходящими для ключей вHashMap
. И я согласен с вами, чтоString
вообще не является классом-оболочкой. По сути, это для хорошей реализации методовhashCode
иequals
, которые являются основными методами, используемыми в ключах вHashMap
, и поскольку они уже есть для работы, нет необходимости изобретать велосипед. - person Luiggi Mendoza   schedule 05.06.2014