在“AbstractMap.SimpleEntry<>”中覆盖“equals()”的任何要点? “等于()”应该是最终的?

时间:2015-03-24 18:23:45

标签: java collections method-overriding

现在,我正在使用番石榴收藏品,而且我很开心。但是,我想了解为什么我自己的代码不起作用。我想我正在尝试做不可能的事情:

我创建了一个SortedSet<Map.Entry<K, V>>数据结构。错误是我有时在Set中有重复。对我来说,重复&#34; Map.Entry是其键与另一个条目的键匹配的键。我想忽略计算平等的价值。

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

我喜欢&#34;不。我不想要那个。&#34;我尝试通过扩展它并覆盖equals()来简化SimpleEntry,以便只使用键来决定相等。

问题
使AbstractMap.SimpleEntry只使用键来判断是否存在某种涟漪效应几乎不可能完全理解?

是否有任何可能的理由在AbstractMap.SimpleEntry中覆盖equals()? javadoc是如此限制性的决定平等,不应该等于()只是 final

1 个答案:

答案 0 :(得分:2)

可以想象您可以以更优化的方式实现equals,例如,如果您已经预先修改了密钥的哈希码。否则,是的,应该被认为是最终的。 Map.Entry合同的一部分是必须在密钥和值上测试相等性。