今日有个朋友问我hashcode是个啥?它与equals的关系?
1.hashcode 拆开看hash可以理解为一种hash算法,经过算法后会得出一个值就叫code,于是得到了我们的hashcode.但是经过计算得到的hashcode不一定是唯一的,比如8/3,7/3结果都是2,这时候我们的对象拥有了相同的hashcode,可以理解为他们被放进了"2" 这个箩里面
2.equals equals是进一步对对象的比较,在"2"这个箩里面继续比较数据,找出相同的那个对象
所以如果我们重写了equals方法,也该去重写hashcode方法
也回答了a.hashcode == b.hashcode 但是 !a.equals(b)的原因
1.hashcode 拆开看hash可以理解为一种hash算法,经过算法后会得出一个值就叫code,于是得到了我们的hashcode.但是经过计算得到的hashcode不一定是唯一的,比如8/3,7/3结果都是2,这时候我们的对象拥有了相同的hashcode,可以理解为他们被放进了"2" 这个箩里面
2.equals equals是进一步对对象的比较,在"2"这个箩里面继续比较数据,找出相同的那个对象
所以如果我们重写了equals方法,也该去重写hashcode方法
也回答了a.hashcode == b.hashcode 但是 !a.equals(b)的原因