Я работал над проблемой кодирования пьяного ходока (пользовательские классы и т. Д.), И я схожу с ума, пытаясь исправить эту маленькую проблему.
Я возился с кодом (длябезрезультатно) и поэтому, не видя никакой надежды, я решил получить внешнее мнение.
Код, который я использовал для добавления в hashmap, выглядит так:
if (hashMap.containsKey(key) == false) {
hashMap.put(key, 1);
}
else {
hashMap.put(key, value + 1);
}
Теоретическиэто должно быть совершенно нормально.Если ключ не сохранен на карте, он добавляется к карте со значением 1. Если ключ фактически присутствует на карте, то значение увеличивается на единицу.Ключ - это просто экземпляр пользовательского класса, который принимает две целочисленные переменные.Он постоянно обновляется.
В конце программы, если я отображаю записи в хэш-карте со значениями больше 1, он должен выглядеть примерно так:
Visited Intersection [avenue=8, street=42] 3 times!
Visited Intersection [avenue=8, street=63] 2 times!
Но когдаЯ наблюдал, как хэш-карта выглядела при каждом вызове функции, она выглядела так:
Hash Map: {Intersection [avenue=6, street=22]=1}
Hash Map: {Intersection [avenue=6, street=23]=1, Intersection
[avenue=6, street=23]=1}
Hash Map: {Intersection [avenue=6, street=22]=2, Intersection
[avenue=6, street=22]=1}
Hash Map: {Intersection [avenue=5, street=22]=2, Intersection
[avenue=5, street=22]=1, Intersection [avenue=5, street=22]=1}
Hash Map: {Intersection [avenue=6, street=22]=3, Intersection
[avenue=6, street=22]=1, Intersection [avenue=6, street=22]=1}
...
Каждая запись в хэш-карте перезаписывалась, и конечный продукт был таким:
Visited Intersection [avenue=8, street=20] 3 times!
Visited Intersection [avenue=8, street=20] 2 times!
Visited Intersection [avenue=8, street=20] 2 times!
Visited Intersection [avenue=8, street=20] 2 times!
...
Первоначально я думал, что код для добавления в hashmap был неправильным, поскольку каждый ключ перезаписывался и отображался только последний обновленный, но теперь я думаю, что это связано с фактическим обновлением ключа.
Пенни за ваши мысли?Извините, если это немного расплывчато.