2015-10-18 6 views
0

Я пытаюсь добавить все уникальные координаты из списка местоположений в единый 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()); 

Это вернет {} Благодаря

+1

Пожалуйста, покажите нам содержимое 'coordMap' и покажите нам пример вызова' addCoords' с переданными аргументами. – Tom

+0

Выглядит хорошо. Вы должны отлаживать и видеть значения на своей карте перед проверкой 'containsKey'. – user1803551

+0

Возможно, из-за ошибок точности вы не получаете один и тот же строковый ключ 'coordsConcat' дважды, чтобы установить и извлечь. –

ответ

1

Это, скорее всего, прецизионный вопрос. Вы можете проверить значения coordsConcat перед тем, как поместить их в HashMap, после того, как вы поместите его в HashMap и перед тем, как вы проверите наличие containsKey.

Есть ли какое-то незначительное (или большое) несоответствие между значениями, вызывающими эту проблему.

Смежные вопросы