作者 | petterp
来源 | https://blog.csdn.net/petterp/article/details/89043847
先来说一下hashcode()和equals方法吧。
我用一个简单的demo来举个例子吧.
public class MyClass {
public static void main(String[] args) {
HashSet books=new HashSet();
books.add(new A());
books.add(new A());
books.add(new B());
books.add(new B());
books.add(new C());
books.add(new C());
System.out.println(books);
}
}
class A{
//类A的 equals 方法总是返回true,但没有重写其hashCode() 方法
@Override
public boolean equals(Object o) {
return true;
}
}
class B{
//类B 的hashCode() 方法总是返回1,但没有重写其equals()方法
@Override
public int hashCode() {
return 1;
}
}
class C{
public int hashCode(){
return 2;
}
@Override
public boolean equals(Object o) {
return true;
}
}
结果
用Object做hashMap的Key时需要做什么?
用自定义类作为key,必须重写equals()和hashCode()方法。
自定义类中的equals() 和 hashCode()都继承自Object类。