Мой вопрос довольно прост.
Когда вычисляется хэш-код для String?
- Когда создается String, хэш-код также вычисляется и всегда готов в O (1) после построения
- Хэш-код вычисляется только при первом вызове метода
hashCode
и готов за O (1) раз для всех последующих вызовов - Хэш-код вычисляется каждый когда вызывается метод
hashCode
,
Вариант 1 кажется разумным, потому что строки неизменяемы. Хэш-код для данной строки никогда не изменится. Но это замедляет создание строк, поэтому также кажется разумным использовать вариант 2. Вариант 3 кажется глупым и пустой тратой времени, но экономит место, потому что хэш-код не сохраняется. Также может быть какая-то логическая причина, по которой вариант 3 - лучший подход, о котором я не думаю.
Заранее большое спасибо