簡體   English   中英

減小數組列表的大小

[英]decreasing the size of an 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--;
            }
        }
    }

列表也是一個arrayList。 謝謝。

ArrayList由以固定大小開始的數組支持,並且僅在需要更大大小時才調整大小。 據我所知,您只能使用trimToSize()縮小ArrayList后備存儲的大小

如果商店的大小很重要,請考慮改用LinkedList

注意:

如果我正確地閱讀了您的代碼,則可以使用以下代碼替換發布的所有代碼:

pointList.removeAll(list);

不,您不需要,因為n永遠都不會讀取。

我相信,這是早期的遺物,開發人員將其添加到在debug.print語句或斷言中使用n的位置。

由於這里實際上沒有問題,所以我會猜測。 我的猜測是int n = pointList.size();的聲明int n = pointList.size(); 是多余的。 由於您將始終擁有pointList因此它將知道其大小。 我也敢打賭這將引發並發修改異常。

因為每次刪除一個項目時,ArrayList都會減小它的大小,所以您根本不需要使用n。

如果在每次迭代之后執行以下操作,則將獲得相同的結果:

pointList.remove(pointList.size()-1);

-1之所以存在,是因為數組顯然從0開始。

好的,我想您想使存儲在n中的pointList的大小保持最新。 在這種情況下,您必須減少n。 但是您可以在double for循環之后簡單地分配n。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM