2016-01-12 24 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很好的建议。编辑。 –