包含问题的Java DefaultListModel元素

包含问题的Java DefaultListModel元素,java,swing,jlist,defaultlistmodel,Java,Swing,Jlist,Defaultlistmodel,我正在编写一个带有swing组件的Java应用程序。我有两个JLists,它们从DefaultListModel获取数据,分别是: private DefaultListModel<Module> moduleListModel; private DefaultListModel<Module> sem1ListModel; sem1ListModel:[软件开发1[7学分]、ICT管理1[7学分]、DOA I[6学分]] 模块模式:[DOA I[6学分]、软件开发1[

我正在编写一个带有swing组件的Java应用程序。我有两个JLists,它们从DefaultListModel获取数据,分别是:

private DefaultListModel<Module> moduleListModel;
private DefaultListModel<Module> sem1ListModel;
sem1ListModel:[软件开发1[7学分]、ICT管理1[7学分]、DOA I[6学分]] 模块模式:[DOA I[6学分]、软件开发1[7学分]、ICT管理1[7学分]、网络设计2[5学分]、软件1[5学分]]

如您所见,软件开发1[7学分]、ICT管理1[7学分]、DOA I[6学分]是两个DefaultListModels中的3个模块,应该从moduleListModel中删除,但这并没有发生


我做错了什么?

我会根据评论做出回答,这样就不会有什么问题了

问题在于
模块
对象实际上是不同的实例,并且没有覆盖
equals。这意味着,即使它们通过重写的
toString
打印相同的内容,模型仍将它们视为不同的对象,并且不执行删除操作


解决此问题的标准方法是覆盖
equals
(和
hashCode
,以防您想要使用散列数据结构)。

如何填充模型?我想知道那些
Module
s是否是不同的对象,没有覆盖的equals.public void LoadModules(ArrayList modules){moduleListModel.clear();for(Module Module:modules){moduleListModel.addElement(mod);}modules ArrayList是一个用模块对象填充的ArrayList。sem1ListMoel也是用同样的方式填充的。请记住,使用相同的toString()实现(如日志所示)并不足以使对象相等。如果没有覆盖equals()值,则必须使用mod1.equals(mod2)==true模块中的方法与mod1==mod2相同。然后我必须问您,数组列表是否相同)返回到我的评论-
模块
s实际上是同一个对象吗?或者您是否创建了两个对象,它们在
toString
中打印出相同的内容,但与
equals
相比有所不同?您是对的,.equal两个相同模块的s()返回false。我必须重写等于
for(int i = 0; i < sem1ListModel.getSize(); i++){
        Module mod = sem1ListModel.getElementAt(i);
                    System.out.println(mod);
        if(moduleListModel.contains(mod)){
            System.out.println(mod);
            moduleListModel.removeElement(mod);
        }
    }
    System.out.println(sem1ListModel);
    System.out.println(moduleListModel);