我应该为contains()方法使用哪些参数?

时间:2015-03-03 12:13:42

标签: java

我真的不明白我应该传递给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"));      
    }
}

2 个答案:

答案 0 :(得分:7)

假设您已在equals课程中正确覆盖Name,则应为:

 if (names.contains(new Name("Joe", "Bloggs"))) {
     ...
 }

答案 1 :(得分:2)

您可以使用

names.contains(new Name("Joe", "Bloggs"));   

但是你应该在Name类中覆盖equals()方法以按预期方式工作。

当您需要处理Java中的收藏框架工作时,最好在您的课程中覆盖equals()hashCode()方法,否则最终会造成混乱。