Я действительно не понимаю, какие параметры я должен передать методу contains(). У меня есть свой класс под названием Name, который состоит из двух строк (firstName, secondName). Я создал объект ArrayList типа Name и 2 Name с тем же именем, например ("Joe, Bloggs") 2x. Итак, какие пареметры я должен пройти, чтобы проверить, работает ли он. Я правильно переопределяю метод equals для Name класс. Это моя основная программа:
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"));
}
}
Предполагая, что вы переопределены equals
правильно в вашем Name
класса, он должен быть:
if (names.contains(new Name("Joe", "Bloggs"))) {
...
}
Name
в метод contains, поскольку список имен содержит экземпляры Name
. Вы создаете экземпляр Name
с помощью вызова конструктора, который требует «new».
Вы можете использовать
names.contains(new Name("Joe", "Bloggs"));
Но вы должны переопределить метод equals()
в классе Name, чтобы он работал так, как ожидалось.
Когда вам когда-либо понадобится работать с картой кадров в Java
, лучше переопределить метод equals()
и hashCode()
в ваших классах, иначе вы закончите беспорядок.