这是本文档旧的修订版!
hashcode即哈希码,是java的object类中的
public native int hashCode();
一般在散列集合中用到,如:HashSet、HashMap以及HashTable
提高查询效率:equals比较俩对象是否相等,但是如果数据量很大,效率会很差,所以先比较hashcode,如果hashcode不相等,equals肯定不相等;如果hashcode相等,再比较equals,这样大大减少比较equals的次数,提高查询效率!
对于两个对象:
在如下HashMap操作过程中
People p1 = new People("Jack", 12); System.out.println(p1.hashCode()); HashMap<People, Integer> hashMap = new HashMap<People, Integer>(); hashMap.put(p1, 1); System.out.println(hashMap.get(new People("Jack", 12)));
比较两次new出来的People对象时候:
import java.util.HashMap; import java.util.HashSet; import java.util.Set; class People{ private String name; private int age; public People(String name,int age) { this.name = name; this.age = age; } public void setAge(int age){ this.age = age; } @Override public int hashCode() { return name.hashCode()*37+age; } @Override public boolean equals(Object obj) { return this.name.equals(((People)obj).name) && this.age== ((People)obj).age; } }
注意,如果hashcode值和equals判断与容易改变的属性有关,则同一对象,在不同时候可能产生的hashcode会不一样,比较结果页会不一样。