亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、問題描述

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

看著自己寫的代碼,感覺完全沒有問題,但就是達不到預(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 

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

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

原因如下: List每remove掉一個元素以后,后面的元素都會向前移動 ,此時如果執(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
  • 此時如果加上上面注釋的代碼 System.out.println(i+" "+list.get(i)+" "); 循環(huán)第4、5次時就會出現(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ù)據(jù)出現(xiàn)的問題的詳細內(nèi)容,更多關(guān)于JAVA遍歷List集合 刪除數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mybatis攔截器及不生效的解決方法

    mybatis攔截器及不生效的解決方法

    本文主要介紹了mybatis攔截器及不生效的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 簡單實現(xiàn)Spring的IOC原理詳解

    簡單實現(xiàn)Spring的IOC原理詳解

    這篇文章主要介紹了簡單實現(xiàn)Spring的IOC原理詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 基于Java設(shè)計一個短鏈接生成系統(tǒng)

    基于Java設(shè)計一個短鏈接生成系統(tǒng)

    相信大家在生活中會收到很多短信,而這些短信都有一個特點是鏈接很短。這些鏈接背后的原理是什么呢?怎么實現(xiàn)的?小編今天就帶你們詳細了解一下
    2021-12-12
  • 配置了jdk的環(huán)境idea卻提示找不到j(luò)dk解決辦法

    配置了jdk的環(huán)境idea卻提示找不到j(luò)dk解決辦法

    在使用Java編程語言進行開發(fā)時,IDEA是一個非常流行和強大的集成開發(fā)環(huán)境,這篇文章主要給大家介紹了關(guān)于配置了jdk的環(huán)境idea卻提示找不到j(luò)dk的解決辦法,需要的朋友可以參考下
    2023-12-12
  • Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法

    Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法

    這篇文章主要給大家介紹了關(guān)于Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法,MySQL是一款常用的關(guān)系型數(shù)據(jù)庫,它的JDBC驅(qū)動程序使得我們可以通過Java程序連接MySQL數(shù)據(jù)庫進行數(shù)據(jù)操作,需要的朋友可以參考下
    2023-11-11
  • 淺析JAVA中的內(nèi)存結(jié)構(gòu)、重載、this與繼承

    淺析JAVA中的內(nèi)存結(jié)構(gòu)、重載、this與繼承

    這篇文章主要介紹了 JAVA中的內(nèi)存結(jié)構(gòu)、重載、this與繼承的相關(guān)資料,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java線程生命周期的終止與復(fù)位

    Java線程生命周期的終止與復(fù)位

    這篇文章主要介紹了Java線程生命周期的終止與復(fù)位,Java的線程狀態(tài)描述放在Thread類里面的枚舉類State中.總共包含了6中狀態(tài),具體詳情需要的小伙伴可以參考一下文章描述
    2022-07-07
  • Java消息摘要算法MAC實現(xiàn)與應(yīng)用完整示例

    Java消息摘要算法MAC實現(xiàn)與應(yīng)用完整示例

    這篇文章主要介紹了Java消息摘要算法MAC實現(xiàn)與應(yīng)用,結(jié)合完整實例形式分析了java消息摘要算法MAC的概念、原理、實現(xiàn)方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-09-09
  • Java Spring MVC 上傳下載文件配置及controller方法詳解

    Java Spring MVC 上傳下載文件配置及controller方法詳解

    這篇文章主要介紹了Java Spring MVC 上傳下載文件配置及controller方法詳解,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • 一文詳解Java中的可變對象(Mutable)與不可變對象(Immutable)

    一文詳解Java中的可變對象(Mutable)與不可變對象(Immutable)

    如何在 Java 中創(chuàng)建不可變對象?我以前以為所有對象都是不可變的,因為如果你改變一個 String 實例的內(nèi)容,它總是會創(chuàng)建一個新的 String 對象并指向該對象,在本文中,我不僅將分享在 Java 中Immutable的步驟,還將討論可變對象與不可變對象及其優(yōu)缺點
    2023-11-11

最新評論