我尝试使用containsKey方法的TreeMap,但不知怎么的,我有问题。
树状图中存储的对象是定义的,例如equals()不提供与compareTo()相同的结果。这是故意的。
然而,java.util.Map的医生说:
如果此映射包含指定键的映射,则返回true。更正式地说,返回true当且仅当这个映射包含一个键k的映射,例如
(key==null ? k==null : key.equals(k))。(最多只能有一个这样的映射。)
所以我试着:
c = someModifiedObject();
boolean t1 = sm.containsKey(c);
someObject c2 = new someObject();
boolean t2 = sm.containsKey(c2);
boolean t3 = c.equals(new Chain());
int t4 = c.compareTo(new Chain());t1是真的,因为对象在树状图中。t3是真,因为t1是相等的t3 (关于更改equals()操作符) t4是假的,t2也是假的。TreeMap似乎使用compareTo()而不是equals()来确定对象是否存在。
在排序映射的另一个实现中,我可以使用equals()来检查一个对象是否存在?
发布于 2014-02-17 17:33:40
虽然没有标准的java来准确地获得您想要的东西,但是您可以创建自己的比较器接口,然后让TreeMap实现这个Comparator。您可以覆盖compareTo()方法以使其任意运行(在您的示例中,使其行为与equals()方法相同)。
https://stackoverflow.com/questions/21835474
复制相似问题