我的意思是我给予了一系列对象,如果我要更改的列表没有给定列表中的某些对象我的,如果我的列表确实有一些给定列表没有的对象,则我将其从列表中删除。我试图实施此功能,但它不起作用。
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>");
}
}
}
是的,元素中的第一个元素将始终列表,我只需要它来指定这是列表还是其他内容。P.S.ListOfusersModel是DefaultListModel对象。
我可以在您的代码中看到一些问题:
-
您有一系列字符串(由
split
产生(和一个列表。您将数组的索引用作列表的索引。这意味着,如果它们具有与数组中相同的索引,则只能从列表中删除匹配元素。这与您对要做的事情的描述不符。 -
从列表中删除元素时,删除元素后所有元素移动到另一个位置;即
removeElement(i)
导致元素i+1
移动到位置i
,元素i+2
移动到i+1
等。但是...然后您增加i
!! -
addElement
在列表末尾添加元素。
如果您打算删除/替换匹配的所有元素,则需要一个嵌套环。另外,查看您正在使用的类的setElement
和insertElement
方法。(显然,您正在使用不在List
API中的方法...但是我不知道它是哪个API。(
最后,我看不到您在哪里尝试这样做:
...如果我的列表确实具有一些给定列表没有的对象,则我将其从列表中删除。
要这样做,您将需要第二次通过,并带有另一对嵌套循环...