Какие параметры я должен использовать для метода contains ()?

1

Я действительно не понимаю, какие параметры я должен передать методу 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"));      
    }
}
  • 0
    Вы правильно использовали метод add, но у вас есть проблемы с содержанием, хотя они принимают одинаковые параметры (один принимает объект вместо универсального типа вашего Списка).
Теги:

2 ответа

7

Предполагая, что вы переопределены equals правильно в вашем Name класса, он должен быть:

 if (names.contains(new Name("Joe", "Bloggs"))) {
     ...
 }
  • 0
    Спасибо за это. мой последний вопрос: почему я должен включать «новое» рядом с именем, даже когда я вызываю метод. Я знал, что должен сделать это при создании нового объекта в массиве.
  • 1
    @Lazio Вы должны передавать экземпляр Name в метод contains, поскольку список имен содержит экземпляры Name . Вы создаете экземпляр Name с помощью вызова конструктора, который требует «new».
Показать ещё 1 комментарий
2

Вы можете использовать

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

Но вы должны переопределить метод equals() в классе Name, чтобы он работал так, как ожидалось.

Когда вам когда-либо понадобится работать с картой кадров в Java, лучше переопределить метод equals() и hashCode() в ваших классах, иначе вы закончите беспорядок.

  • 1
    это похоже на другой ответ!
  • 0
    @ Прашант так? это затрудняет кого-то? Я думаю, что вы можете увидеть некоторые другие моменты в моем ответе.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню