java - 将对象与对象的数组列表进行比较

标签 java equals

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

我尝试使用 foreach 循环来隐式比较每个对象。

这是我用来将临时用户的对象与现有用户进行比较的方法。

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 方法?”...

为了使用 (Array)List、HashTable、HashSet 或 HashMap 等,您需要重写 DriverMain 类中的“几个”方法。 对于列表、集合等以及其他一些集合类型或映射/哈希表来评估您的对象是否是其内容的成员,您需要为其提供一种方法来比较您传递给它的对象和对象目前它成立。

列表
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

设置
contains(Object o) 方法使用对象的 hashCode()equals(Object o) 方法来比较对象 o 到任何对象 x(Set Collection 的成员)。

有关此内容的更多信息,请访问以下链接:https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html

map
containsKey(Object o) 方法使用对象的 hashCode()equals(Object o) 方法来比较对象 o 到任何对象x( map 接口(interface)的成员)。

有关此内容的更多信息,请访问以下链接:https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

重要说明 有更多方法可以解决这种情况,所有方法都取决于其实现。例如:TreeSetTreeMap 不使用 hashCode() 方法。

关于java - 将对象与对象的数组列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213651/

相关文章:

java - 在添加了字段的类中自动更新 equals() 和 hashCode() 方法。

java - JCombobox 和 String.equals(null)

java - 分面分类 - Spring Data Mongo

java - 由synchronized关键字标记的关键部分与使用信号量有何不同?

java - Apache ant 构建在 WSAD 中失败。 'package [com.company.myClass] does not exist"

java - 将vertx TestSuite与junit一起使用

java - 理想的哈希码实现

javascript - 什么时候应该在 javascript 中使用 === 或 ==、!== 和 != 等?

使用数组的具有多个变量的 Ruby case 语句

java - Wicket REST 功能适用于 Jetty 但不适用于 Tomcat