为了解决hash冲突做的。个人感觉用到的很少。
以HashMap举例。hashcode()和equals()方法都是object的方法。当我们使用某个自定义对象当key的时候。就会有问题。new两个user对象u1和u2,内容完全一样,但是在堆里存储的地址肯定不一样。所以如果不重写hashcode()和equals()的时候肯定就只能当2个key类使用,但是他们的内容一样,有可能业务上认为是一个。所以就要重写这两个方法。保证u1.equals(u2)=true。然后hashcode()就不能返回u1或者u2对象的code了。看业务逻辑应该返回user对象.用户id的code。这样u1的用户id和u2的用户id返回的code肯定就一样了。这样就能保证一个用户就算有两个对象。也能判断是true。
个人觉得HashMap一般是string为key。string已经重写好了equals方法和hashcode方法了。所以直接用就好了。
注意:分清楚是object的方法要重写。不是string的方法要重新。
文章讨论了在Java中使用HashMap时可能出现的hash冲突问题,强调了当使用自定义对象作为key时,需要重写equals()和hashcode()方法以确保正确的行为。例如,两个内容相同的User对象在内存中地址不同,如果不重写,将被视为不同的key。作者建议根据业务逻辑,如用户ID,来确定hashcode()的返回值,以解决冲突。此外,指出通常使用已重写这些方法的String对象作为key是安全的。
2327

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



