为什么如果实现了hashCode方法,如果在数据类型的Dictionary中键也必须实现equals方法?

Xin*_*nus 2 dictionary

数据类型:字典键

有人可以告诉我同时实现它们(hashCode/equals)的重要性.因为我认为如果我们实现hashCode方法equals将比较hashCodes并给我们相等.

Cod*_*Tao 5

HashCode不保证唯一性.例如,HashCode在大多数语言中占用2 ^ 32个值.如果你有一个4个整数的类,你可以拥有多少个可能的独特状态/实例?(2 ^ 32)^ 4.这意味着即使您实现了完美的哈希码,您仍然会发生2 ^(32*3)次冲突,其中一对不同的对象具有相同的哈希码.

因此,HashCode用作第一个"快速"比较,用于查找与您要查找的对象类似的对象.一旦你找到一组对象,就会检查每个对象的相等性,看看是否有一个正是你正在寻找的对象.