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

前端之家收集整理的这篇文章主要介绍了.net – 为什么我们需要IEqualityComparer,IEqualityComparer接口?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
‘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是预先泛型.

原文链接:https://www.f2er.com/java/126280.html

猜你在找的Java相关文章