gpt4 book ai didi

java - 使用字符串查找 Java 非字符串键控 Java HashMap

转载 作者:行者123 更新时间:2023-11-30 04:28:41 26 4
gpt4 key购买 nike

我正在尝试使用 CircuitId 类 作为键控的 HashMap。 CircuitId 类包含一个 String clci 成员,并且该类基本上通过使用 clci 成员的 hashCode()/equals() 来重写 hashCode()/equals()

我想这样做,以便我可以使用简单的字符串查找 map ,并且无需将字符串转换为 CircuitId 对象来查找 map 。但它不起作用,我认为因为 HashMap 使用这种评估形式 (key==null ? k==null : key.equals(k)) 其中 key 是输入键和 k 是映射中的键条目,特别是 key.equals(k) 部分。我想知道为什么 HashMap 没有执行 k.equals(key) 呢?

(至少这样,我认为我正在尝试做的事情会起作用。)但事实并非如此,有什么技巧可以做到这一点吗?

最佳答案

If i have overridden the equals() with the check to handle if the key being passed is a string or an actual CircuitId object, i don't understand why it wouldn't have worked.

容器是否将电路与字符串进行比较,或者字符串与电路进行比较是特定于实现的,并且不保证在 JRE 的 future 版本中相同。

一般来说,给定两个对象ab ,预计a.equals(b)b.equals(a)反之亦然。这称为对称属性。

CircuitId为例和String ,而您可以覆盖 CircuitId.equals()并制作circuit.equals(id)返回true , id.equals(circuit)永远是false因为你无法覆盖 String.equals()

您应该使用 Map<String,CircuitId> (也许还有另一个 Map<CircuitId,SomethingElse>,以防您需要将 CircuitId 作为另一个 map 中的键。

关于java - 使用字符串查找 Java 非字符串键控 Java HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165372/

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