从ArrayList中删除不起作用

时间:2013-09-25 04:40:58

标签: java arraylist

for(JCheckBox currentCheckBox : imagesToBeImportedCheckBox){ 
    if(currentCheckBox.isSelected()){
                    System.out.println("The text Box selected for removing are"+currentCheckBox.getText());
                }

             }
            for(JCheckBox currentCheckBox : imagesToBeImportedCheckBox){

                if(currentCheckBox.isSelected()){
                    System.out.println("I am entering in the loop where this image has to be removed "+currentCheckBox.getText());
                    imagesToBeImported.remove(currentCheckBox.getText());

                }

             }
            for(ResourceListObject currentImage : imagesToBeImported){

                System.out.println("After removing the images left are "+currentImage.getName());

             }

这是输出

选择删除的文本框是aix71b

选择删除的文本框是Migration-image

我正在进入必须删除此图像的循环aix71b

我正在进入必须删除此图像的循环中迁移图像

删除后剩下的图像是aix71b

删除后剩下的图像是Migration-image

2 个答案:

答案 0 :(得分:5)

看看你的代码,很有可能,这就是问题所在。

imagesToBeImported.remove(currentCheckBox.getText());

这会尝试从集合String中删除名为aix71b的{​​{1>}( getText()提示我在此处说出字符串},但是集合{{ 1}}包含imagesToBeImported类型的元素。

这就是因为imagesToBeImportedResourceListObject的类型不同而没有从您的收藏集中移除任何内容的原因。

编辑: - (您可以使用以下两种方式从列表中删除)

您可以为String的每个元素遍历ResourceListObject(使用迭代器),并在imagesToBeImported等于imagesToBeImportedCheckBox时从imagesToBeImported移除元素resourceListObjectElement.getName()

否则,您可以根据其中的currentCheckBox.getText()字段覆盖equals中的ResourceListObject方法,以便您可以执行以下操作,将其从{name移除1}}。

imagesToBeImported

答案 1 :(得分:0)

问题是currentCheckBox.getText()currentImage.getName()不是完全相同的对象 - 即使值相同,equals方法也不正确。