gpt4 book ai didi

java - 对于 containsKey(),treemap 使用 compareTo 而不是 equals

转载 作者:行者123 更新时间:2023-12-01 12:15:40 25 4
gpt4 key购买 nike

我尝试使用 containsKeyTreeMap 方法,但不知何故我遇到了问题。

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

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

Returns true if this map contains a mapping for the specified key. More formally, returns true if and only if this map contains a mapping for a key k such that (key==null ? k==null : key.equals(k)). (There can be at most one such mapping.)



所以我尝试了以下操作:
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() 来确定对象是否存在。

是否有排序 map 的另一种实现,我可以在其中使用 equals() 来检查对象是否存在?

最佳答案

虽然没有标准的 java API 可以准确地得到你想要的,你可以创建你自己的 Comparator 接口(interface),然后让你的 TreeMap实现这个Comparator .您可以覆盖 compareTo()方法以随心所欲(在您的情况下,使其行为与 equals() 方法相同)。

关于java - 对于 containsKey(),treemap 使用 compareTo 而不是 equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835474/

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