6

我想在 Java 中创建一个 subList 并从以前的 List 中删除 subList 中的值。我的程序正确地创建了 subList,但它并没有从 previousList 中删除正确的值。

我的代码:

for(int i=0; i<4; i++){
     List<Object> sub=new ArrayList<Object>(prevoiusList.subList(0,6));

     for (int j=0; j<6; j++){
         previousList.remove(j);
     }
}    
4

4 回答 4

10

首先j=0,您删除第一个元素。这样做时,您会移动所有其他元素,因此第二个元素成为第一个元素,依此类推。

在下一次迭代j=1中,您删除了第二个元素,它原本是第三个元素......

要解决此问题,请仅使用0索引或迭代器。

于 2013-05-19T11:36:29.567 回答
3

在一行中完成

prevoiusList.subList(0,6).clear()
于 2017-02-28T14:37:36.253 回答
1

你为什么不这样做:

previousList = previousList.subList(7, previousList.size());
于 2013-05-19T11:52:09.083 回答
1

要从一个列表中“移动”6 个元素以创建另一个列表:

List<Object> list;
List<Object> subList = new ArrayList<Object>(list.subList(0, 6));
list.removeAll(subList);

需要注意的是List.subList(), , 返回列表的视图,因此对原始列表的修改将反映在子列表中,因此创建新列表并将子列表传递给构造函数。

把它放在一个循环中:

List<Object> list;
while (list.size() > 5) {
    List<Object> subList = new ArrayList<Object>(list.subList(0, 6));
    list.removeAll(subList);
    // do something with subList
}
// list now has 0-5 elements
于 2013-05-19T12:06:55.027 回答