Классы Wrapper, такие как Integer, неизменяемы, как класс String.Классы обертки и кеширование кеш-кода
Класс строк кэширует свой хэш-код.
Содержит ли классы-оболочки свой хеш-код, например, класс String?
Классы Wrapper, такие как Integer, неизменяемы, как класс String.Классы обертки и кеширование кеш-кода
Класс строк кэширует свой хэш-код.
Содержит ли классы-оболочки свой хеш-код, например, класс String?
Нет, потому что это необязательно. String.hashCode()
может занимать время линейное по длине String
, но классы-оболочки имеют постоянную, быструю реализацию хэш-кода.
для информации: После просмотра исходного кода я нашел следующую реализацию hashcode: 'public int hashCode() { return value; } 'где значение - это примитивное значение int, представленное этим объектом Integer. - быстрая реализация hashcode() –
True для Integer и т. д. Просто посмотрел на их исходный код и (в версии, которую я видел) BigInteger и BigDecimal не кэшируют свои 'hashCode' и, возможно, должны. Избегайте их в качестве ключей в Картах. – user949300
@ user949300: «Избегайте их в качестве ключей в Maps» - этот оператор для Integer (классы-оболочки) или для BigInteger и BigDecimal? –
Исходный код доступен свободно. –