国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

解決JAVA遍歷List集合,刪除數據時出現的問題

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

一、問題描述

有時候,我們會遇到在遍歷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++,則剛剛移過來的元素沒有被讀取。

分析:

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 此時如果加上上面注釋的代碼 System.out.println(i+' '+list.get(i)+' '); 循環第4、5次時就會出現異常

二、解決方法

解決方法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集合時,刪除數據出現的問題的詳細內容,更多關于JAVA遍歷List集合 刪除數據的資料請關注好吧啦網其它相關文章!

標簽: Java
主站蜘蛛池模板: 国产精品久久久久久亚洲伦理 | 国产一区二区日韩欧美在线 | 久久国产精品二国产精品 | 高清偷自拍第1页 | 鸥美性生交xxxxx久久久 | 亚洲日本va午夜中文字幕一区 | 亚洲另类激情综合偷自拍图 | 亚洲一区二区三区一品精 | 国产精品一级香蕉一区 | 亚洲三级免费 | 国产成人综合亚洲欧美在 | 国产免费一级高清淫曰本片 | 美国三级视频 | 欧美在线一区二区三区不卡 | 日韩精品免费一区二区三区 | 日韩在线视频不卡一区二区三区 | 怡红院免费全部视频在线 | 亚洲精品国产第一区第二区国 | 国产亚洲精品高清在线 | 国产成人精品午夜在线播放 | 午夜欧美成人香蕉剧场 | 在线视频亚洲欧美 | 青青草国产免费一区二区 | 欧美成人怡红院在线观看 | 国产一区二区三区国产精品 | 久久精品国产国产精品四凭 | 欧美怡红院免费全视频 | 日本国产最新一区二区三区 | 中文字幕在线观看91 | 在线视频观看免费视频18 | 亚洲七七久久精品中文国产 | 亚洲成人免费在线 | 国产高清免费视频 | 日本久操 | 日本不卡免费高清视频 | 99久久精品国产自免费 | 一级做a爰片久久毛片免费看 | 91精品视品在线播放 | 美女一丝不佳一级毛片香蕉 | 精品久久网站 | 亚洲一区二区三区不卡视频 |