Когда я пытался получить ошибку из хэш-карты с одной записью, я продолжал получать нуль. Наконец я проверил его следующим образом:Java HashMap не получает значения от ключа
Iterator<Position> it = pieces.keySet().iterator();
while (it.hasNext()){
System.out.println("object from key >> " + pieces.get(it.next()));
}
Iterator<Piece> itt = pieces.values().iterator();
while (itt.hasNext()){
System.out.println("direct object >> " + itt.next().getPosition());
}
Выхода я получил:
object from key >> null
direct object >> [email protected]
кода я показал был использован, как это без всего остального между ними.
Что касается объекта position, я переопределил функцию hashCode(), чтобы вернуть hashCode на основе значений класса Position. Поэтому, когда переменные внутри объекта изменяются, HashCode изменяется. Вышеупомянутый код работает задолго до изменения значения объекта позиции. Но как только я изменю, я получаю нуль через ключ.
Вы абсолютно не можете изменить любые значения, по которым вычисляется 'hashCode', как только ключ находится в' Map'. Вы ** должны ** 'удалить' и повторно ввести 'add' ключ. –
, так что вы хотите сказать, что объект HashMap сохраняет хэш-коды во вставке и не вызывает функцию hashCode(), когда я вызываю функцию get() HashMap? –
Как вы думаете, работает ли 'HashMap'? Как это достигается (амортизируется) 'O (1)' производительность? –