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

java中for循環(huán)刪除集合陷阱

 更新時間:2015年05月10日 10:37:37   投稿:hebedich  
java中在增強for循環(huán)為什么不能增刪集合呢?一個循環(huán)迭代,跟集合的增刪改沒什么關系。修改集合不是for去做的。for只管循環(huán)迭代,你在循環(huán)里邊修改集合,改變集合的長度,順序?qū)ρh(huán)都有影響

首先看下面的代碼:

import java.util.LinkedList;
import java.util.List;

public class DeleteCollection {
  
  public static void main(String[] args) {
    List<String> list = new LinkedList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("e");
    for(int i=0;i<list.size();i++){ //循環(huán)刪除集合中的元素
      list.remove(i);
    }
    System.out.println("還剩余的元素個數(shù):"+list.size());
  }
}

上述的代碼按照思路應該是對的,輸出的結果也應該是0

看下面實際輸出的結果:

還剩余的元素個數(shù):2

你也許會問為什么呢?因為集合的大小是動態(tài)變化的,當你刪除一個元素之后,元素中的序號又重新排列,原來第二個應該刪除的元素現(xiàn)在排在了第一個元素的位置,真正刪除的卻是第三個元素,依次類推,刪除的是第一個、第三個、第五個、、、、如果在原來刪除的代碼中加入語句:System.out.println("即將刪除的元素:"+list.get(i));即可驗證。

加入上述語句后輸出的結果:

即將刪除的元素:a
即將刪除的元素:c
即將刪除的元素:e
還剩余的元素個數(shù):2

解決辦法:

究其原因是因為你要刪除的元素往前面移動了,而你的i保存的值依舊往后走,所以如果讓i不往后走,往前走一個,即可刪除本來排在第二個位置的元素現(xiàn)在排在了第一個位置上的元素。

更改后的核心代碼:

  for(int i=0;i<list.size();i++){
      System.out.println("即將刪除的元素:"+list.get(i));
      list.remove(i);
      i--;
    }

結果:

即將刪除的元素:a
即將刪除的元素:b
即將刪除的元素:c
即將刪除的元素:d
即將刪除的元素:e
還剩余的元素個數(shù):0

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關文章

  • SpringBoot3集成Swagger3的詳細教程

    SpringBoot3集成Swagger3的詳細教程

    Swagger 3(OpenAPI 3.0)提供了更加強大和靈活的API文檔生成能力,本教程將指導您如何在Spring Boot 3項目中集成Swagger3,并使用Knife4j作為UI界面,需要的朋友可以參考下
    2024-03-03
  • Java集合中的LinkedHashSet源碼解讀

    Java集合中的LinkedHashSet源碼解讀

    這篇文章主要介紹了Java集合中的LinkedHashSet源碼解讀,在LinkedHashMap中,雙向鏈表的遍歷順序通過構造方法指定,如果沒有指定,則使用默認順序為插入順序,即accessOrder=false,需要的朋友可以參考下
    2023-12-12
  • ElasticSearch如何設置某個字段不分詞淺析

    ElasticSearch如何設置某個字段不分詞淺析

    最近在學習ElasticSearch官方文檔過程中發(fā)現(xiàn)的某個問題,記錄一下 希望能幫助到后面的朋友,下面這篇文章主要給大家介紹了關于ElasticSearch如何設置某個字段不分詞的相關資料,需要的朋友可以參考下
    2022-04-04
  • Java 字節(jié)數(shù)組類型(byte[])與int類型互轉(zhuǎn)方法

    Java 字節(jié)數(shù)組類型(byte[])與int類型互轉(zhuǎn)方法

    下面小編就為大家?guī)硪黄狫ava 字節(jié)數(shù)組類型(byte[])與int類型互轉(zhuǎn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊)

    mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊)

    這篇文章主要介紹了mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊),具有很好的參考價值,希望對大家有所幫助。
    2021-11-11
  • java中LinkedList使用迭代器優(yōu)化移除批量元素原理

    java中LinkedList使用迭代器優(yōu)化移除批量元素原理

    本文主要介紹了java中LinkedList使用迭代器優(yōu)化移除批量元素原理,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JAXB命名空間_動力節(jié)點Java學院整理

    JAXB命名空間_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了JAXB命名空間的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • shuffle的關鍵階段sort(Map端和Reduce端)源碼分析

    shuffle的關鍵階段sort(Map端和Reduce端)源碼分析

    今天小編就為大家分享一篇關于shuffle的關鍵階段sort(Map端和Reduce端)源碼分析,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 不同Java泛型構造函數(shù)的詳解

    不同Java泛型構造函數(shù)的詳解

    這篇文章主要介紹了不同Java泛型構造函數(shù)的詳解,因為對象是應用類型,對象賦值是指向同一個對象,所以如果需要保存對象某個時刻的狀態(tài),就需要構造函數(shù)來new一個新的對象。下面我們來詳細了解一下吧
    2019-06-06
  • 關于SpringBoot整合Canal數(shù)據(jù)同步的問題

    關于SpringBoot整合Canal數(shù)據(jù)同步的問題

    大家都知道canal是阿里巴巴旗下的一款開源工具,純java開發(fā),支持mysql數(shù)據(jù)庫,本文給大家介紹SpringBoot整合Canal數(shù)據(jù)同步的問題,需要的朋友可以參考下
    2022-03-03

最新評論

民和| 翼城县| 綦江县| 水城县| 雷州市| 历史| 靖安县| 和林格尔县| 丹棱县| 枣阳市| 康平县| 汉川市| 略阳县| 江阴市| 郁南县| 潞西市| 营口市| 长兴县| 阳谷县| 菏泽市| 东山县| 黄冈市| 章丘市| 新田县| 汤阴县| 荥经县| 盐边县| 西宁市| 易门县| 大新县| 三门峡市| 通江县| 河北省| 万荣县| 藁城市| 汝南县| 获嘉县| 酉阳| 江安县| 黔东| 慈溪市|