减少arraylist的大小

时间:2010-11-24 16:25:25

标签: java arraylist

您好 我有一个问题,在下面的代码中我们需要写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。 感谢。

5 个答案:

答案 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。