"吗? "equals()"应该是最终的吗?-6ren"> "吗? "equals()"应该是最终的吗?-现在,我正在使用 Guava 系列,一切都很好,很高兴。但是,我想了解为什么我自己的代码不起作用。我想我正在尝试做不可能的事情: 我创建了一个 SortedSet>数据结构。错误是我有时会在集合中得到-6ren">
gpt4 book ai didi

java - 有什么意义可以覆盖 "equals()"中的 "AbstractMap.SimpleEntry<>"吗? "equals()"应该是最终的吗?

转载 作者:行者123 更新时间:2023-12-02 04:51:01 26 4
gpt4 key购买 nike

现在,我正在使用 Guava 系列,一切都很好,很高兴。但是,我想了解为什么我自己的代码不起作用。我想我正在尝试做不可能的事情:

我创建了一个 SortedSet<Map.Entry<K, V>>数据结构。错误是我有时会在集合中得到重复的内容。对我来说,“重复”Map.Entry 是指其键与另一个条目的键匹配的键。我想忽略计算相等性的值。

但是,这是 API:
AbstractMap.SimpleEntry : public boolean equals(Object o)

我当时想“不。我不想那样。”我试图通过扩展 SimpleEntry 并重写 equals() 来使 SimpleEntry 屈服于我的意愿,以便仅使用键来决定相等性。

问题
让 AbstractMap.SimpleEntry 仅使用键来决定相等性是否会产生几乎不可能完全理解的某种链式 react ?

绝对有任何可能的原因来重写 AbstractMap.SimpleEntry 中的 equals() 吗? javadoc 在决定相等性方面有如此严格的限制,难道 equals() 不应该被设为 final 吗?

最佳答案

可以想象,您可能会以某种更优化的方式实现equals,例如您是否预先缓存了 key 的哈希码。否则,是的,它应该被视为最终的。这是 Map.Entry 契约的一部分,必须对键和值进行相等性测试。

关于java - 有什么意义可以覆盖 "equals()"中的 "AbstractMap.SimpleEntry<>"吗? "equals()"应该是最终的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240105/

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