我有以下树图:
TreeMap<String, Integer> distances = new TreeMap<String, Integer>();
它包含字符串“Face”和“Foo”,并具有适当的值,例如:
System.out.println(distances);
产量:
{Face=12, Foo=2}
但是,即使正确返回 2,也会返回。以前distances.get(Face)
可以正常工作,但由于某种原因,它停止工作。请注意,我在为两个键调用 get()之前打印出地图,所以我没有不小心将 Face 的值更改为 null。有没有其他人遇到过这个问题?有什么我可以做的吗?我只是想弄清楚如何调试这个问题,这很糟糕。null
distances.get(Foo)
distances.get(Face)
注意:在实际代码中,我实际上并没有使用字符串,而是使用了一个不同的对象,所以它是:TreeMap<Object, Integer>
。因此,这不仅仅是变量名与文字字符串的混淆。
第二个注意事项:我也对我正在使用的对象的实现hashcode()
和使用非常有信心。equals()
(另外,如果我的实现不正确,那它不是从一开始就不起作用吗?而不是停止随机工作?)