天天看點

hashcode是什麼意思?

用最簡單的方法來說,hashcode就是一個簽名。當兩個對象的hashcode一樣時,兩個對象就有可能一樣。如果不一樣的話兩個對象就肯定不一樣。

一般用hashcode來進行比較兩個東西是不是一樣的,可以很容易的排除許多不一樣的東西。

最常用的地方就是在一堆東西裡找一個東西。先用你要找的東西的hashcode和所有東西的hashcode比較,如果不一樣的話就肯定不是你要找的東西。如果一樣的話就很可能是你要找的東西。然後再進行仔細的比較兩個東西是不是真的一模一樣。

//一個不能加重複内容的容器
class Set {
Object[] objs = new Object[]; //裝東西的的數組
int size = ; //已經有幾個東西

//添加新東西,成功的話傳回true,如果已經有了的話傳回false
boolean add(Object o) {
for(int i=;i<size;i++) { //搜尋所有已經加進來的對象
if(objs[i].hashCode() == o.hashCode()) //如果hashcode一樣的話就說明兩個有可能是一樣的
if(objs[i].equals(o)) return false; //仔細的确認一下是不是真的一樣,如果一樣的話就不加入這個對象
}
objs[size++]=o; //确認沒有過這個東西,加入數組
return true;
}
}
           

當使用這個類的時候要確定兩個一樣的東西的hashcode肯定是一樣的。兩個不同的東西的hashcode可以是一樣的,不過這樣會減慢運作速度,是以盡量避免(也就是所謂的碰撞)。