Я хочу проверить, содержит ли мой список некоторые значения, используя анонимный класс - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть структура списка некоторого класса; скажем List<Client> myList;. Client имеет поля типа name и passwd. Если я хочу проверить, содержит ли мой список класс с ними, как я могу это проверить? Потому что я пытаюсь использовать myList.contains(new Client(name,surname)), и, похоже, он не работает.

for(DBClient client : register.getALl()){
     System.out.println(client);
}
System.out.println(check[0]+" "+check[1]);
if(register.getALl().contains(new DBClient(check[0],check[1]))){

Должен ли я проверить, что все переменные класса равны моим переменным, или это можно как-то проверить?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

То есть реализация JDK ArrayList внутри содержит (Объект t)

public int indexOf(Object o) {
    if (o == null) {
        for (int i = 0; i < size; i++)
            if (elementData[i]==null)
                return i;
    } else {
        for (int i = 0; i < size; i++)
            if (o.equals(elementData[i]))
                return i;
    }
    return -1;
}

так, это зависит от метода равных () вашего объекта.

0 голосов
/ 02 апреля 2019

Как предположил @dirch, это зависит от метода equals (). По умолчанию Object.equals () сравнивает только ссылку на объект. Если вы хотите переопределить это поведение, вы можете переопределить метод equals () в классе FirstDup следующим образом:

public boolean equals (Object dup) {

    return this.name.equals(((DBClient)dup).getName()) && this.surName.equals(((DBClient)dup).getSurName());

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...