gpt4 book ai didi

java - 为什么 containsKey 方法不能按预期工作?

转载 作者:行者123 更新时间:2023-12-01 11:03:02 31 4
gpt4 key购买 nike

我正在尝试将位置列表中的所有唯一坐标添加到单个 HashMap 中,该 HashMap 将坐标作为键,将计数作为值。关键是由“$”符号连接的经度和纬度。

//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 总是返回 false,即使通过测试我输入了两个相同的经度和纬度坐标。

编辑:我尝试了 addCords(0,0); 5 次,HashMap 仍然是空的。

编辑2: double 值仅精确到千分位。

测试用例:

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());

这将返回 {}谢谢

最佳答案

这很可能是一个精度问题。在将 coordsConcat 的值放入 HashMap 之前、将其放入 HashMap 后以及检查 containsKey 之前,您可能需要检查 coordsConcat 的值。

很可能导致此问题的值之间存在一些轻微(或主要)不匹配。

关于java - 为什么 containsKey 方法不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193482/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com