gpt4 book ai didi

java - 为什么 java.util.TreeMap.KeySet 没有实现 equals?

转载 作者:行者123 更新时间:2023-11-30 07:09:53 25 4
gpt4 key购买 nike

我想检查两个 TreeMap 的所有键是否相等。通过调用

myTreeMap.navigableKeySet()

我收到一个 java.util.TreeMap.KeySet,它实现了 NavigableSet,这又扩展了 SortedSet。因此,我希望只有当两个 KeySet 不仅包含相同的元素(由 AbstractSet 的 equals 检查)而且也以相同的顺序时,它们才被认为是相等的。我看不到 KeySet 类是如何强制执行此限制的。我想念什么?

最佳答案

你不能做出这样的保证。

虽然 NavigableSet 扩展了 SortedSet,但保证元素将按元素自身定义的顺序排列(如果它们实现了 Comparable)或给定的 Comparator,它不会覆盖 Set's contract for .equals()Set 不保证顺序。

您可以有两个具有相同元素的 SortedSet,但比较不同,它们相等。

检查元素顺序的唯一方法是将两个集合的元素放入 List 并检查这些列表是否相等——因为 List does guarantee element order in its .equals() contract

请注意,如果 KeySet 类确实覆盖了 .equals()(因此也覆盖了 .hashCode())以检查元素顺序,它将不再能够假装实现 Set!

关于java - 为什么 java.util.TreeMap.KeySet 没有实现 equals?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22617910/

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