小编use*_*142的帖子

树形图使用compareTo代替containsKey()的equals

我尝试使用的containsKey方法TreeMap,但是以某种方式我遇到了问题。

存储在树形图中的对象的定义与equals()不会产生相同的结果compareTo()。这是有意的。

但是,的文档java.util.Map说:

如果此映射包含指定键的映射,则返回true。更正式地说,当且仅当此映射包含键k的映射(例如)时,才返回true (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());
Run Code Online (Sandbox Code Playgroud)

t1为true,因为对象位于树形图中。t3为true,因为t1等于t3(对于更改equals()运算符而言)t4为false,但是,t2也为false。似乎TreeMap使用compareTo()而不是equals()确定对象是否存在。

是否有排序映射的另一种实现,可以equals()用来检查对象是否存在?

java equals treemap compareto

5
推荐指数
1
解决办法
3489
查看次数

标签 统计

compareto ×1

equals ×1

java ×1

treemap ×1