您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

HashSet如何比较元素是否相等?

HashSet如何比较元素是否相等?

它使用一个IEqualityComparer<T>EqualityComparer<T>.Default除非您在构造上指定了另一个)。

将元素添加到集合中时,它将使用来查找哈希码IEqualityComparer<T>.GetHashCode,并存储哈希码和元素(当然,在检查元素是否已在集合中之后)。

要查找一个元素,它将首先使用IEqualityComparer<T>.GetHashCode来查找哈希码,然后对于具有相同哈希码的所有元素,它将IEqualityComparer<T>.Equals用于比较实际相等性

这意味着您有两个选择:

请注意,从 顺序 比较的角度来看,这些都不是什么-这很有意义,因为在某些情况下,您可以轻松指定相等性但不能指定总顺序。Dictionary<TKey, TValue>基本上与都一样。

如果要使用 排序 而不是相等比较的集合,则应SortedSet<T>从.NET 4 使用- 允许您指定一个IComparer<T>而不是一个IEqualityComparer<T>。这将使用IComparer<T>.Compare-将委派给,IComparable<T>.CompareTo或者IComparable.CompareTo如果您正在使用Comparer<T>.Default

其他 2022/1/1 18:15:46 有499人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶