我创建了两个类,一个驱动程序和一个 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
重要说明
有更多方法可以解决这种情况,所有方法都取决于其实现。例如:TreeSet
和 TreeMap
不使用 hashCode()
方法。
关于java - 将对象与对象的数组列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213651/