我不清楚使用哈希碼的和等於在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