首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >treemap对containsKey()使用的是containsKey而不是等于

treemap对containsKey()使用的是containsKey而不是等于
EN

Stack Overflow用户
提问于 2014-02-17 17:25:12
回答 1查看 5.1K关注 0票数 5

我尝试使用containsKey方法的TreeMap,但不知怎么的,我有问题。

树状图中存储的对象是定义的,例如equals()不提供与compareTo()相同的结果。这是故意的。

然而,java.util.Map的医生说:

如果此映射包含指定键的映射,则返回true。更正式地说,返回true当且仅当这个映射包含一个键k的映射,例如(key==null ? k==null : key.equals(k))。(最多只能有一个这样的映射。)

所以我试着:

代码语言:javascript
复制
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()来检查一个对象是否存在?

EN

回答 1

Stack Overflow用户

发布于 2014-02-17 17:33:40

虽然没有标准的java来准确地获得您想要的东西,但是您可以创建自己的比较器接口,然后让TreeMap实现这个Comparator。您可以覆盖compareTo()方法以使其任意运行(在您的示例中,使其行为与equals()方法相同)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21835474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档