我不清楚使用哈希码的和等于在java.I方法有以下查询重写哈希码,等于在java中
首先
如果我只覆盖equals方法值弗雷德的所有对象都添加尽管HashSet实现了设置界面,但不能重复使用值。
二 如果我重写了equals和hashCode只有一个对象被添加到HashSet.Why?
第三 如果我在这种情况下只实现等于将删除一个Fred对象将删除所有?
class Person
{
String name;
Person(String name) {
this.name=name;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person))
{
return false;
}
Person p = (Person)obj;
return p.name.equals(this.name);
}
/*@Override
public int hashCode() {
return name.hashCode();
}*/
}
public class HashSetDemo {
/*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<Person> s= new HashSet<Person>();
s.add(new Person("Fred"));
s.add(new Person("Fred"));
s.add(new Person("Fred"));
s.add(new Person("Fred1"));
for(Person a:s) {
System.out.println(a.name);
}
s.remove(new Person("Fred"));
System.out.println(s);
}
}
这看起来很像功课。如果是这样,请将其标记为。 – Viruzzo 2012-03-08 14:55:36
@prerna广泛的解释检查这个http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java – hidralisk 2012-03-08 15:07:21