我创建了两个类,一个驱动程序和一个GUI框架类。在驱动程序类中,我放置了用户对象的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;
}
我希望用户通过。但是结果总是“用户失败”。 任何帮助将不胜感激:)
答案 0 :(得分:1)
此答案基于您对以下评论的回答:“您的DriverMain
类是否覆盖equals
方法?” ...
为了使用(Array)List,HashTable,HashSet或HashMap等,您需要在DriverMain
类中重写“一对”方法。
为了使List,Set等以及其他一些Collection Type或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
设置
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)
方法使用对象的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()
方法。