[toc]
我们经常会遇到一些业务,要对数据进行去重,我们可能首先想到的就是重写equals方法,但是结果却不尽人意,这是为啥呢?其实还需要重写hashCode方法,因为光重写equals方法是不够的

1 | package com.eicky; |
啰嗦几句:
当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true
当obj1.hashCode() == obj2.hashCode()为false时,obj1.equals(obj2)必须为false
重写这两个方法的作用就是为了去重,方式就不用多说了吧(Set什么的都能玩).
我们默认的去比对是否相同是比对的地址,而重写这两个方法就相当于比较两个对象是否相同就是去比对对象里面的内容