List物件remove方法的使用

2021-08-04 20:16:23 字數 1599 閱讀 5573

一、源程式

string str1 =

newstring("1");

string str2 =

newstring("2");

string str3 =

newstring("3");

string str4 =

newstring("4");

string str5 =

newstring("5");

list

list

=new arraylist();

list

.add(str1);

list

.add(str2);

list

.add(str3);

list

.add(str4);

list

.add(str5);

system.out.println("list.size()="

+list

.size());

for (int i =

0; i <

list

.size(); i++)

system.out.println("after remove:list.size()="

+list

.size());

本來預期結果應該是:

after remove:list.size()=0

但實際上結果卻是:

after remove:list.size()=2

原因: list每remove掉乙個元素以後,後面的元素都會向前移動 ,此時如果執行i++,則剛剛移過來的元素沒有被讀取。

二、分析:

list中有5條資料,需要迴圈5次,

第一次資料為:1 2 3 4 5

執行完remove(0) 後,資料為 2 3 4 5  , i=1
第二次資料為:2 3 4 5

執行完remove(1) 後,資料為 2 4 5  , i=2
第三次資料為:2 4 5

執行完remove(2) 後,資料為 2 4  , i=3

3 < list.size()=2 迴圈結束

三、解決方案

解決方法1:每移過一次後,再把 i 移回來

for (int i = 0; i

< list.

size(); i++)

解決方法2:先刪除後面的元素

for (int i = list.

size()-1; i >= 0; i--)

iterator it = list.iterator();

while(it.hasnext())

關於List的remove 方法

最近遇到乙個小問題,我將其簡化為下列 list的remove 方法在下列顏色注重的 執行的原始碼也是不同的 listlist new arraylist list.add 11 list.add 12 list.add 13 list.add 14 list.add 15 list.add 16 f...

Java中List的remove方法

今天被問到乙個問題 numberlist是乙個儲存數字的容器,以下 執行後容器中的數字是什麼?listnumberlist new arraylist 5 numberlist.add 2 numberlist.add 4 numberlist.add 1 numberlist.add 3 numb...

JAVA 使用List中的remove方法遇到的坑

一 問題描述 有個需求是從list過濾掉金額小於0.01的資料,看起來很簡單,我卻搞了半天,沒次資料都沒刪除乾淨,都會有四五條沒刪除。二 解決方法 測試了半天,發現for迴圈寫錯了,剛開始是這樣寫的 for int i 0 i psychologistresponselist.size i debu...