过滤List中的对象

时间:2016-04-18 18:56:40

标签: java list user-interface javafx

现在我一直坚持这个问题一段时间了,并且想知道是否有人可以提供帮助。我已经制作了一个Java GUI(大学生最后一年的模块选择器),我只能得到一点工作。

背景:添加新模块和课程应该很容易,所以我试图避免硬编码。现在我要做的就是让程序根据路线导入某些模块。它非常微不足道,我可以让它以肮脏的方式工作,但不是我想要的方式。

if(course.getCourseName() == "Computer Science") {
        select.setModules(courses[0].getModulesOnCourse());
    } else if(course.getCourseName() == "Software Engineering") {
        select.setModules(courses[1].getModulesOnCourse());
    }

现在这种方式有效,但它的编码水平很难达到1000级。我希望它的工作方式是以下两种方式之一:

courses.forEach(c -> {if(c.equals(course)){select.setModules(c.getModulesOnCourse())}});

OR

for(Course c : courses) {
        if(c.equals(course)) {select.setModules(c.getModulesOnCourse());}
    }

现在他们理论上应该完美地工作,但两者都没有。我只是想知道是否有人可以帮助我理解为什么,也许可以提供解决方案。为方便起见,我将附上以下所有文件的要点。

The gist

1 个答案:

答案 0 :(得分:1)

==String等对象一起使用绝对不是一个好主意。始终使用.equals

如果您将.equals与自己的自定义对象一起使用,请确保覆盖.equals方法并对其进行编码,以便您可以为两个课程的相同内容定义自己的条件。如果不这样做,该方法很可能总是返回false。