加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

.net – 为什么我们需要IEqualityComparer,IEqualityComparer接

发布时间:2020-12-15 00:47:42 所属栏目:Java 来源:网络整理
导读:‘Equal’和’GetHashcode’方法存在于对象类中,我们的类型继承了对象基类. 直接实现对象的两个方法和使用IComparer接口有什么不同? 如果我们重写对象的Equal和GetHashCode,并推送到哈希表,它将使用overring的相等方法? 什么是新的哈希表与IEqualityCompar
‘Equal’和’GetHashcode’方法存在于对象类中,我们的类型继承了对象基类.
直接实现对象的两个方法和使用IComparer接口有什么不同?

如果我们重写对象的Equal和GetHashCode,并推送到哈希表,它将使用overring的相等方法?

什么是新的哈希表与IEqualityComparer构造函数的不同之处?

解决方法

当你需要能够“排序”对象时使用IComparable接口,它为你提供了一个方法(CompareTo),它告诉你两个对象是否是<,=或> .使用IEqualityComparer的构造函数允许您提供特定的Equals / GetHashCode,它可以与您的对象定义的不同.通常,Hashtable将使用您的对象重写Equals和GetHashCode(或基础对象Equals和GetHashCode).

举个例子,标准字符串以区分大小写的方式(“A”!=“a”)进行比较,但是你可以使IEqualityComparer助手类能够以不区分大小写的方式对字符串进行散列. (从技术上讲,这个类已经存在多种变体:它们被称为StringComparer.InvariantCultureIgnoreCase和StringComparer的所有其他静态方法,它们返回一个实现IComparer的StringComparer对象,IEqualityComparer,IComparer< string>,IEqualityComparer< string>)

作为注释,Hashtable使用IEqualityComparer可选参数,而不是通用版本IEqualityComparer< T>,因为Hashtable是预先泛型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读