成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

解決JAVA遍歷List集合,刪除數(shù)據(jù)時(shí)出現(xiàn)的問題

瀏覽:7日期:2022-08-29 09:52:44

一、問題描述

有時(shí)候,我們會(huì)遇到在遍歷List集合的過程中刪除數(shù)據(jù)的情況。

看著自己寫的代碼,感覺完全沒有問題,但就是達(dá)不到預(yù)期的效果,這是為什么呢?下面我們來分析下

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());

本來預(yù)期結(jié)果應(yīng)該是:

list.size()=5 after remove:list.size()=0

但實(shí)際上結(jié)果卻是:

list.size()=5 after remove:list.size()=2

原因如下: List每remove掉一個(gè)元素以后,后面的元素都會(huì)向前移動(dòng) ,此時(shí)如果執(zhí)行i++,則剛剛移過來的元素沒有被讀取。

分析:

List中有5條數(shù)據(jù),需要循環(huán)5次, 第一次數(shù)據(jù)為:1 2 3 4 5 執(zhí)行完remove(0) 后,數(shù)據(jù)為 2 3 4 5 , i=1 第二次數(shù)據(jù)為:2 3 4 5 執(zhí)行完remove(1) 后,數(shù)據(jù)為 2 4 5 , i=2 第三次數(shù)據(jù)為:2 4 5 執(zhí)行完remove(2) 后,數(shù)據(jù)為 2 4 , i=3 此時(shí)如果加上上面注釋的代碼 System.out.println(i+' '+list.get(i)+' '); 循環(huán)第4、5次時(shí)就會(huì)出現(xiàn)異常

二、解決方法

解決方法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集合時(shí),刪除數(shù)據(jù)出現(xiàn)的問題的詳細(xì)內(nèi)容,更多關(guān)于JAVA遍歷List集合 刪除數(shù)據(jù)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java