我想在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);
}
}
答案 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