Java 将对象与对象数组列表进行比较

Java 将对象与对象数组列表进行比较,java,equals,Java,Equals,我创建了两个类,一个驱动程序和一个GUI框架类。在Driver类中,我放置了用户对象的arrayList。但是当从GUI框架类调用方法时,返回的值是0 我尝试使用for-each循环来隐式比较每个对象 这是我用来比较临时用户和现有用户对象的方法 public boolean confirm(boolean loggedIn, int tempStudentNo, int tempPin) { //Creation of temporary object for comparison w

我创建了两个类,一个驱动程序和一个GUI框架类。在Driver类中,我放置了用户对象的arrayList。但是当从GUI框架类调用方法时,返回的值是0

我尝试使用for-each循环来隐式比较每个对象

这是我用来比较临时用户和现有用户对象的方法

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;

} 
我希望用户通过。但结果总是“用户失败”。
任何帮助都将不胜感激:)

此答案基于您对以下评论的回答:“您的
DriverMain
类是否覆盖
equals
方法?”

为了使用(数组)列表、哈希表、哈希集或哈希映射等,您需要覆盖
DriverMain
类中的“两个”方法。 为了一份清单、一套东西等。。和其他一些集合类型或Map/HashTable来评估对象是否是其内容的成员,您需要为其提供一种方法来比较您传递给它的对象和它当前持有的对象

列表
contains(Object o)
方法使用对象的
equals(Object o)
方法将对象
o
与任何对象
x
(列表集合的成员)进行比较

有关这方面的更多信息,请访问以下链接:

设置
contains(Object o)
方法使用对象的
hashCode()
equals(Object o)
方法将对象
o
与任何对象
x
(集合的成员)进行比较

有关这方面的更多信息,请访问以下链接:

地图
containsKey(Object o)
方法使用对象的
hashCode()
equals(Object o)
方法将对象
o
与任何对象
x
(映射界面的成员)进行比较

有关这方面的更多信息,请访问以下链接:

重要提示
有更多的方法来处理这种情况,所有这些都取决于它的执行情况。例如:
TreeSet
TreeMap
不使用
hashCode()
方法。

是否
DriverMain
重写
equals
方法?您的
DriverMain
类是否重写
equals
方法?我不这么认为,我没有重写此中的任何方法project@JonathanCarlos
contains
使用
equals()
,因此需要在
DriverMain
中实现值相等。如果你把它们放在
HashSet
(即使没有),你也需要重写
hashcode()
。你能给我举个例子吗,我想我会更好地理解它,而不是完全正确。例如
TreeSet/Map
根本不使用hashcode,它们还使用
compare()
而不是
equals()
HashSet/Map
使用hashcode和equals。我将在下面的注释中更清楚地说明这一点。我同意,这完全取决于您的实现,但默认情况下,这是最常见的方法。很明显,询问此问题的用户没有很多Java经验,将来也不会使用
TreeSet/Map
;或除
ArrayList
HashSet
HashMap