您好
我有一个问题,在下面的代码中我们需要写n--;
吗?
int n = pointList.size();
for(int i=pointList.size()-1;i>=0;i--){
for(int j=0;j<list.size();j++){
if(pointList.get(i).equals(list.get(j))){
pointList.remove(i);
n--;
}
}
}
list也是一个arrayList。 感谢。
答案 0 :(得分:6)
ArrayList
由一个以固定大小开头的数组支持,只有在需要更大的大小时才会调整大小。据我所知,你只能使用trimToSize()
缩小ArrayList
的后备存储的大小
如果商店的大小很重要,请考虑使用LinkedList
。
注意:
如果我正确地阅读了你的代码,你可以用这个代替你发布的所有代码:
pointList.removeAll(list);
答案 1 :(得分:0)
不,你没有,因为n
永远不会在任何地方阅读。
我相信,这是前面的一个遗留问题,开发人员将其添加到debug.print语句或断言中使用n。
答案 2 :(得分:0)
由于这里没有真正的问题,我会猜测。我的猜测是int n = pointList.size();
的声明是多余的。由于您将始终拥有pointList
,因此它将知道其大小。此外,我愿意打赌这将引发并发修改异常。
答案 3 :(得分:0)
因为每次删除项目时,ArrayList都会减小它的大小,所以你根本不必使用n。
如果在每次迭代后执行以下操作,它将获得相同的结果:
pointList.remove(pointList.size() - 1);
-1是因为显然数组以0开头。
答案 4 :(得分:0)
好吧,我想你想保持n中存储的pointList的大小是最新的。在这种情况下,你必须减少n。但你可以在double for循环后简单地指定n。