сравнивая объект с arrayList объектов - PullRequest
1 голос
/ 03 октября 2019

Я создал два класса, драйвер и класс фрейма GUI. В классе драйверов я помещаю свой массив списков пользовательских объектов. Но при вызове метода из класса фрейма GUI возвращаемое значение равно 0.

Я пытался использовать для каждого цикла для неявного сравнения каждого объекта.

Это метод iИспользую для сравнения объекта временных пользователей с существующими пользователями.

public boolean confirm(boolean loggedIn, int tempStudentNo, int tempPin) {

    //Creation of temporary object for comparison with existing one
    DriverMain temp = new DriverMain(tempStudentNo, tempPin);

    if (getCreation().contains(temp)) {
        System.out.println("user pass");
        setLoggedIn(true);
    } 

    else {
        System.out.println("user fail");
    }
    return loggedIn;

} 

Я ожидаю, что пользователь пройдет. Но результатом всегда является «сбой пользователя». Любая помощь будет оценена :) 1008 *

1 Ответ

1 голос
/ 03 октября 2019

Этот ответ основан на вашем ответе на комментарий (и), спрашивающий: «Ваш класс DriverMain переопределяет метод equals?» ...

Для того, чтобы использовать (Array) List, HashTable, HashSet или HashMap и т. Д., Вам необходимо переопределить «пару» методов в вашем классе DriverMain. Чтобы List, Set и т. Д. И некоторые другие типы коллекций или Map / HashTable могли оценить, является ли ваш объект членом его содержимого, вам необходимо предоставить ему способ сравнения объекта, который вы ему передаете, и объектов. в настоящий момент он содержит.

Список
В методе contains(Object o) используется метод equals(Object o) объекта для сравнения вашего объекта o с любым объектом x (членомСписок коллекции).

Для получения дополнительной информации об этом, пожалуйста, посетите следующие ссылки: https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/list.html

Set
Метод contains(Object o) использует метод hashCode() и equals(Object o) Объекта для сравнения вашего Объекта o с любым Объектом x (членом Коллекции Наборов).

Для получения дополнительной информации посетитеследующие ссылки: https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html

Карта
В методе containsKey(Object o) для сравнения используются методы Object hashCode() и equals(Object o)ваш объект o к любому объекту x (член интерфейса карты).

Для получения дополнительной информации об этом, пожалуйста, посетите следующие ссылки: https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

Важное примечание Есть и другие способыподходить к такой ситуации, все зависит от ее реализации. Например: TreeSet и TreeMap не используют метод hashCode().

...