[b] 如果需要把一个对象放入HashSet中时,如果重写该对象对应类的equals()方法,应用应该重写其hashcode()方法,其规则是:如果两个对象通过equals方法比较返回true时,这两个对象的hashcode也应该相同。[/b]
如果两个对象通过equals方法比较返回true,但这两个对象的hashcode()方法返回不同的hashcode时,这将导致hashset将会把这两个对象保存在hashset的不同位置,从而两个对象都可以添加成功,这与set集合的规则有点出入。
如果两个对象的hashcode()方法返回的hashcode相同,但他们通过equals方法比较返回false时将更麻烦:因为两个对象的hashcode值相同,hshset将试图把他们保存在同一个位置,但实际上又不行(否则将只剩下一个对象),所以处理起来比较复杂;而且hashset访问集合元素时也是根据元素的hashcode的值来访问的,如果hashset中包含两个元素有相同的hashcode值,将会导致性能下降。
[b] 当两个对象通过equals方法比较返回true时,这两个对象的hashcode应该相等。
对象中用作equals比较标准的属性,都应该用来计算hashcode值。[/b]
如果两个对象通过equals方法比较返回true,但这两个对象的hashcode()方法返回不同的hashcode时,这将导致hashset将会把这两个对象保存在hashset的不同位置,从而两个对象都可以添加成功,这与set集合的规则有点出入。
如果两个对象的hashcode()方法返回的hashcode相同,但他们通过equals方法比较返回false时将更麻烦:因为两个对象的hashcode值相同,hshset将试图把他们保存在同一个位置,但实际上又不行(否则将只剩下一个对象),所以处理起来比较复杂;而且hashset访问集合元素时也是根据元素的hashcode的值来访问的,如果hashset中包含两个元素有相同的hashcode值,将会导致性能下降。
[b] 当两个对象通过equals方法比较返回true时,这两个对象的hashcode应该相等。
对象中用作equals比较标准的属性,都应该用来计算hashcode值。[/b]
本文深入探讨了HashSet的工作原理,特别是当对象被加入到HashSet时,hashCode方法与equals方法之间的关系。文章强调了为了确保Set集合行为正确且高效,必须遵循hashCode方法与equals方法的一致性原则。


被折叠的 条评论
为什么被折叠?



