我真的不明白我应该传递给contains()方法的参数。我有自己的名为Name的类,它由2个字符串组成(firstName,secondName)。我创建了一个Name类型的ArrayList和2个同名的Name对象,例如(" Joe," Bloggs")2x。那么我必须通过哪些参数来检查它是否有效。我已正确覆盖Name类的equals方法。这是我的主要计划:
import java.util.ArrayList;
public class EqualsTest {
public static void main(String[] args) {
ArrayList<Name> names = new ArrayList<Name>();
names.add(new Name("Joe", "Bloggs"));
names.add(new Name("John", "Smith")); //<--
names.add(new Name("Alan", "Wake")); // | the same name
names.add(new Name("Robert", "High"));// |
names.add(new Name("John", "Smith")); //---
names.contains(Name("Joe", "Bloggs"));
}
}
答案 0 :(得分:7)
假设您已在equals
课程中正确覆盖Name
,则应为:
if (names.contains(new Name("Joe", "Bloggs"))) {
...
}
答案 1 :(得分:2)
您可以使用
names.contains(new Name("Joe", "Bloggs"));
但是你应该在Name类中覆盖equals()
方法以按预期方式工作。
当您需要处理Java
中的收藏框架工作时,最好在您的课程中覆盖equals()
和hashCode()
方法,否则最终会造成混乱。