雖然絆倒我發現這個非常有趣的程序,允許添加重複元素到HashSet
。我希望有人能很好地解釋HashSet允許添加重複元素
public class Human implements Comparable<Human> {
Integer age;
public Human(int age) {
this.age = age;
}
public int compareTo(Human h) {
return h.age.compareTo(this.age);
}
public String toString() {
return ""+this.age;
}
}
主要類
public class Test {
public static void main(String[] args) {
Set<Human> humans = new HashSet<Human>();
humans.add(new Human(13));
humans.add(new Human(33));
humans.add(new Human(21));
humans.add(new Human(21));
System.out.println("Size : "+humans.size());
System.out.print(humans);
}
}
預期輸出:[21, 33, 13]
而是得到這個:[21, 21, 33, 13]
哈希散列哈希散列。哈希散列哈希。散列哈希。哈希。 –
程序中的'toString()'實現應該是'this.age.toString()'。在這裏使用'「」+連接並不理想。 – Unihedron
[Missing something HashSet duplicates]可能的重複(http://stackoverflow.com/questions/1663506/missing-something-hashset-duplicates) – vaxquis