爲什麼它達不到印刷生產線「在這裏」?換句話說,爲什麼它不使用我重寫的equals? 在此先感謝類沒有使用覆蓋等於
import java.util.*;
class NumberClass extends Object{
private int number;
public NumberClass(int n){
number=n;
}
@Override
public boolean equals(Object other){
System.out.println("here");
return false;
}
@Override
public String toString(){
return number+"";
}
}
public class HelloWorld {
public static void main(String[] args) {
Set <NumberClass> set= new HashSet<NumberClass>();
set.add(new NumberClass(0));
set.add(new NumberClass(0));
System.out.println(set);
}
}
所以它不使用equals方法,而是使用某種形式的哈希碼? – Sammy 2013-02-15 04:28:23
@Sammy - 的確如此。如果兩個對象散列到同一個存儲桶,它只會使用「equals」。這是哈希表(和哈希集合)如此高效的一部分 - 它們不必測試集合中大多數(通常是任何)元素的平等性。 – 2013-02-15 04:29:32