您好,登錄后才能下訂單哦!
小編這次要給大家分享的是JAVA遍歷List集合,刪除數據時出現問題怎么辦,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
一、問題描述
有時候,我們會遇到在遍歷List集合的過程中刪除數據的情況。
看著自己寫的代碼,感覺完全沒有問題,但就是達不到預期的效果,這是為什么呢?下面我們來分析下
String str1 = new String("1"); String str2 = new String("2"); String str3 = new String("3"); String str4 = new String("4"); String str5 = new String("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++) { list.remove(i); // i--; //System.out.println(i+" "+list.get(i)+" "); } System.out.println("after remove:list.size()=" + list.size());
本來預期結果應該是:
list.size()=5
after remove:list.size()=0
但實際上結果卻是:
list.size()=5
after remove:list.size()=2
原因如下: List每remove掉一個元素以后,后面的元素都會向前移動 ,此時如果執行i++,則剛剛移過來的元素沒有被讀取。
分析:
二、解決方法
解決方法1:每移過一次后,再把 i 移回來
for (int i = 0; i < list.size(); i++) { list.remove(i); i--; }
解決方法2:先刪除后面的元素
for (int i = list.size()-1; i >= 0; i--) { list.remove(i); }
解決方法3:使用iterator刪除
for(Iterator it = list.iterator();it.hasNext();){ it.remove(); }
看完這篇關于JAVA遍歷List集合,刪除數據時出現問題怎么辦的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。