Java创建subList并从之前的List中删除值

时间:2013-05-19 11:33:34

标签: java

我想在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 个答案:

答案 0 :(得分:10)

首先j=0然后删除第一个元素。这样做时你会移动所有其他元素,所以第二个元素变为第一个,依此类推。

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

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

答案 1 :(得分:3)

一行完成

prevoiusList.subList(0,6).clear()

答案 2 :(得分:1)

为什么不这样做:

previousList = previousList.subList(7, previousList.size());

答案 3 :(得分: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