如何动态更改列表

How to dynamically change list

我的意思是我得到了一个对象数组,如果我要更改的列表中没有给定列表中的某些对象,那么我将它们添加到我的列表中,如果我的列表中有有一些给定列表没有的对象,然后我将它们从我的列表中删除。 我试过实现这个,但没有成功。

void changeList(String data){
    String[] elements = data.split(":");
    for (int i = 0; i < elements.length - 1; i++) {
        if(i < listOfUsersModel.size() && !listOfUsersModel.getElementAt(i).equalsIgnoreCase(elements[i+1])){
            listOfUsersModel.remove(i);
            listOfUsersModel.addElement("<html>" + elements[i+1] + "</html>");
        } else if (i >= listOfUsersModel.size()){
            listOfUsersModel.addElement("<html>" + elements[i+1] + "</html>");
        }
    }
}

是的,elements 中的第一个元素始终是 LIST,我只需要它来指定它是列表还是其他内容。 P.S。 ListOfUsersModel 是一个 DefaultListModel 对象。

我在你的代码中发现了一些问题:

  1. 您有一个字符串数组(由 split 生成)和一个列表。您正在使用数组的索引作为列表的索引。这意味着您只会从列表中删除匹配的元素,如果它们具有与数组中相同的索引。这与您对您正在尝试做的事情的描述不符。

  2. 当您从列表中删除一个元素时,删除元素之后的所有元素都会移动到不同的位置;即 removeElement(i) 导致元素 i+1 移动到位置 i,元素 i+2 移动到 i+1 等等。但是......然后你增加 i !!

  3. addElement 在列表末尾添加一个元素

如果您打算删除/替换所有匹配的元素,则需要嵌套循环。另外,查看您正在使用的 class 的 setElementinsertElement 方法。 (你显然使用了 List API 中没有的方法......但我无法弄清楚它是哪个 API。)

最后,我没看到你在哪里尝试这样做:

... if my list does have some objects that the given list doesn't then I remove them from my list.

为此,您需要进行第二遍,使用另一对嵌套循环...