【发布时间】:2014-12-27 04:11:31
【问题描述】:
您好,我发现了一个与收藏相关的问题。
public class Person {
private String name;
public Person(String name){
this.name=name;
}
public boolean equals(Object o){
if(!(o instanceof Person))return false;
Person p=(Person)o;
return p.name.equals(this.name);
}
public static void main(String[] args) {
HashSet<Person> hs=new HashSet<Person>();
hs.add(new Person("Hi"));
hs.add(new Person("Hi"));
hs.add(new Person("Hi"));
hs.add(new Person("Hi"));
System.out.println("Elements"+hs.size());
}
}
Hashset 的大小是 4。但它不需要是 1 吗?既然已经实现了equals方法,那么HashSet可以包含多个同名Person对象吗?
是否所有的 Person 对象都具有相同的 hashcode,因为 hashCode 方法没有被覆盖?
【问题讨论】:
标签: java collections