为什么重写了equals方法后,也要重写hashCode方法?
如果只重写equals方法,不重写hashCode方法,就有可能导致在 x.equals(y) 表达式成立的条件下,x 和 y 的 hashCode 值却不相同。此时这个只重写了 equals 方法的对象在使用散列集合进行存储的时候,由于散列集合使用 hashCode 来确定 key 的位置,如果存储两个完全相同的对象但是这两个对象有不同的hashCode值,就会出现两个相同的对象储存在散列集合的不同位置,违反了散列集合的规则,也会造成该类对象无法使用散列存储结构。










