2016-01-12 54 views
0

任何人都知道這個問題的答案?學習考試atm,它看起來像這樣即將到來。Java代碼,可以使用一些幫助

b) Amend the Person class so the code snippet below will work properly 
ArrayList<Person> people = new ArrayList<Person>(); 

//Assume Person objects have been added to the list 

if (people.contains(new Person("Adam Ant", 48))) 
{ 
//Do something 
} 
else 
{ 
//Do something else 
} 
+0

首先,你需要提供你的一切,包括Person類,那麼我們就可以開始幫助你,但總的想法是,你需要實現/覆蓋 – Vilsol

+1

有你的compareTo()方法考慮'人們'如何知道它是否包含特定的對象?這種比較可能如何工作? – MadProgrammer

+0

閱讀文檔。這裏:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.Object) – njzk2

回答

1

修改Person類所以下面的代碼片段會正常工作

覆蓋Object.equals(Object)Person。喜歡的東西,

@Override 
public boolean equals(Object obj) { 
    if (obj instanceof Person) { 
     Person p = (Person) obj; 
     return this.name.equals(p.name) && this.age == p.age; 
    } 
    return false; 
} 

這也是一個很好的做法,超越hashCode(或您的Person不會與一些Collection小號正常工作)。喜歡的東西,

@Override 
public int hashCode() { 
    return name.hashCode() + age; 
} 
+1

當你爲equals操作時,應始終重寫hashCode;見Joshua Bloch「有效的Java」。 – duffymo

+0

@duffymo很好的建議。編輯。 –