Я пытаюсь добавить все уникальные координаты из списка местоположений в единый HashMap, который имеет координату в качестве ключа, и значение count. Ключом является долгота и широта, объединенные символом «$».Почему метод containsKey не работает должным образом?
//String = coordinates concatinated with '$', Integer = coordinate occurrence count
private HashMap<String, Integer> coordMap = new HashMap<String, Integer>();
...
public void addCoords(double longitude, double latitude) {
//The total count of the state
stateCount++;
String coordsConcat = longitude + "$" + latitude;
//Here we're removing the entry of the existing coord, then re-adding it incremented by one.
if (coordMap.containsKey(coordsConcat)) {
Integer tempCount = coordMap.get(coordsConcat);
tempCount = tempCount + 1;
coordMap.remove(coordsConcat);
coordMap.put(coordsConcat, tempCount);
} else {
coordMap.put(coordsConcat, 1);
}
}
Вопрос, который я имею, что ContainsKey всегда возвращает ложь, даже если через тестирование я вошел два одинаковых координаты широты и долготы.
EDIT: Я пробовал addCords(0,0);
5 раз, а HashMap по-прежнему пуст.
EDIT 2: Двойные значения относятся только к тысячному месту.
Test Case:
GeoState test = new GeoState("MA");
test.addCoords(0,0);
test.addCoords(0,0);
test.addCoords(0,0);
test.addCoords(0,0);
System.out.println(test.getRegionCoords());
Это вернет {}
Благодаря
Пожалуйста, покажите нам содержимое 'coordMap' и покажите нам пример вызова' addCoords' с переданными аргументами. – Tom
Выглядит хорошо. Вы должны отлаживать и видеть значения на своей карте перед проверкой 'containsKey'. – user1803551
Возможно, из-за ошибок точности вы не получаете один и тот же строковый ключ 'coordsConcat' дважды, чтобы установить и извлечь. –