如何动态更改列表
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 对象。
我在你的代码中发现了一些问题:
您有一个字符串数组(由 split
生成)和一个列表。您正在使用数组的索引作为列表的索引。这意味着您只会从列表中删除匹配的元素,如果它们具有与数组中相同的索引。这与您对您正在尝试做的事情的描述不符。
当您从列表中删除一个元素时,删除元素之后的所有元素都会移动到不同的位置;即 removeElement(i)
导致元素 i+1
移动到位置 i
,元素 i+2
移动到 i+1
等等。但是......然后你增加 i
!!
addElement
在列表末尾添加一个元素。
如果您打算删除/替换所有匹配的元素,则需要嵌套循环。另外,查看您正在使用的 class 的 setElement
和 insertElement
方法。 (你显然使用了 List
API 中没有的方法......但我无法弄清楚它是哪个 API。)
最后,我没看到你在哪里尝试这样做:
... if my list does have some objects that the given list doesn't then I remove them from my 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 对象。
我在你的代码中发现了一些问题:
您有一个字符串数组(由
split
生成)和一个列表。您正在使用数组的索引作为列表的索引。这意味着您只会从列表中删除匹配的元素,如果它们具有与数组中相同的索引。这与您对您正在尝试做的事情的描述不符。当您从列表中删除一个元素时,删除元素之后的所有元素都会移动到不同的位置;即
removeElement(i)
导致元素i+1
移动到位置i
,元素i+2
移动到i+1
等等。但是......然后你增加i
!!addElement
在列表末尾添加一个元素。
如果您打算删除/替换所有匹配的元素,则需要嵌套循环。另外,查看您正在使用的 class 的 setElement
和 insertElement
方法。 (你显然使用了 List
API 中没有的方法......但我无法弄清楚它是哪个 API。)
最后,我没看到你在哪里尝试这样做:
... if my list does have some objects that the given list doesn't then I remove them from my list.
为此,您需要进行第二遍,使用另一对嵌套循环...