最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年07月15日 14:51:41   作者:時(shí)間-海  
這篇文章主要介紹了解決JAVA遍歷List集合時(shí),刪除數(shù)據(jù)出現(xiàn)的問題,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

一、問題描述

有時(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ù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無(wú)效字符錯(cuò)誤問題

    Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無(wú)效字符錯(cuò)誤問題

    這篇文章主要介紹了Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無(wú)效字符錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringQuartz定時(shí)任務(wù)核心組件JobDetail與Trigger配置

    SpringQuartz定時(shí)任務(wù)核心組件JobDetail與Trigger配置

    Spring框架與Quartz調(diào)度器的集成提供了強(qiáng)大而靈活的定時(shí)任務(wù)解決方案,本文主要介紹了SpringQuartz定時(shí)任務(wù)核心組件JobDetail與Trigger配置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • Java中StringRedisTemplate和RedisTemplate的區(qū)別及使用方法

    Java中StringRedisTemplate和RedisTemplate的區(qū)別及使用方法

    本文主要介紹了Java中StringRedisTemplate和RedisTemplate的區(qū)別及使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 詳細(xì)解讀spring中的@Resource注解

    詳細(xì)解讀spring中的@Resource注解

    這篇文章主要介紹了詳細(xì)解讀spring中的@Resource注解,此注解來源于JSR規(guī)范(Java?Specification?Requests),其作用是找到依賴的組件注入到應(yīng)用來,它利用了JNDI技術(shù)查找所需的資源,需要的朋友可以參考下
    2023-10-10
  • Windows系統(tǒng)編寫bat腳本啟動(dòng)、停止及重啟Java服務(wù)jar包

    Windows系統(tǒng)編寫bat腳本啟動(dòng)、停止及重啟Java服務(wù)jar包

    在bat文件中我們將編寫一些代碼來運(yùn)行Java jar文件,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)編寫bat腳本啟動(dòng)、停止及重啟Java服務(wù)jar包的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • mybatis?實(shí)現(xiàn)字段大小寫賦值

    mybatis?實(shí)現(xiàn)字段大小寫賦值

    這篇文章主要介紹了mybatis?實(shí)現(xiàn)字段大小寫賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java代碼是如何被CPU狂飆起來的

    Java代碼是如何被CPU狂飆起來的

    無(wú)論是剛剛?cè)腴TJava的新手還是已經(jīng)工作了的老司機(jī),恐怕都不容易把Java代碼如何一步步被CPU執(zhí)行起來這個(gè)問題完全講清楚。本文就帶你詳細(xì)了解Java代碼到底是怎么運(yùn)行起來的。感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • Spring Aware標(biāo)記接口使用案例解析

    Spring Aware標(biāo)記接口使用案例解析

    這篇文章主要介紹了Spring Aware標(biāo)記接口使用案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot用controller跳轉(zhuǎn)html頁(yè)面的實(shí)現(xiàn)

    springboot用controller跳轉(zhuǎn)html頁(yè)面的實(shí)現(xiàn)

    這篇文章主要介紹了springboot用controller跳轉(zhuǎn)html頁(yè)面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java遍歷Map對(duì)象集合的六種方式代碼示例

    Java遍歷Map對(duì)象集合的六種方式代碼示例

    Java中的Map是一種鍵值對(duì)映射的數(shù)據(jù)結(jié)構(gòu),它提供了一些常用的方法用于獲取、添加、刪除和修改元素,下面這篇文章主要給大家介紹了關(guān)于Java遍歷Map對(duì)象集合的六種方式,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

囊谦县| 平潭县| 蒙阴县| 高碑店市| 白玉县| 平潭县| 拉孜县| 贵定县| 略阳县| 扎鲁特旗| 星座| 大新县| 南江县| 冷水江市| 巴东县| 黄梅县| 老河口市| 汶上县| 江津市| 淄博市| 双牌县| 东兰县| 马尔康县| 梨树县| 易门县| 西青区| 新绛县| 旺苍县| 舒兰市| 涿鹿县| 桑植县| 资阳市| 兴业县| 科技| 南江县| 诏安县| 宁明县| 汾阳市| 苍南县| 菏泽市| 普陀区|