1.利用eclipse中自動重寫hashCode和equals對象
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Dog other = (Dog) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
2.製造對象,比較list的hashCode
List<Dog> list1 = new ArrayList<Dog>();
List<Dog> list2 = new ArrayList<Dog>();
Dog dog1 = new Dog();
dog1.setAge(1);
dog1.setName("sp1");
list1.add(dog1);
Dog dog2 = new Dog();
dog2.setAge(1);
dog2.setName("sp1");
list2.add(dog2);
if(list1.hashCode() == list2.hashCode()){
System.out.println("same:"+list1.hashCode());
}else{
System.out.println("diff list1:"+list1.hashCode()+",list2:"+list2.hashCode());
}
3.可以通過hashCode比較,主要是根據ArrayList源碼中的hashCode取值原理
public int hashCode() {
int hashCode = 1;
Iterator<E> i = iterator();
while (i.hasNext()) {
E obj = i.next();
hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
}
return hashCode;
}