equals和hashCode
equals是比较两个对象是否一样。若类没有重写equals方法,则会使用Object类中的equals方法,Object中equals方法是==比较,是比较栈内存中的引用地址是否一样。若类中重写了equals方法,则比较的是两个对象的值是否一样。**hashCode方法,是获取哈希值。一个例子:栈内存是哈希表实现的,key-value的方式存储数据。若要往栈内存放入一个元素,会先计算哈希值,根据哈希值(key)去快速的找value,若没有value,则会放入;若有value,会进行equals比较,若不同会把数据散列到其它地方,若相同就会有冲突。例子中,若没有hashCode获取哈希值,会把栈内存中所有的value全部取出来进行equals比较,栈内存的性能会很差。有了哈希值,大大提高了性能**。**
注:重写equals方法,也要重写hashCode方法。因为比较两个对象是否相等是,会先判断哈希值是否一样,不一样才会执行equals方法。
还没有评论,来说两句吧...