国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java中for循環(huán)刪除集合陷阱

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

2019-12-17 13:30hebedich JAVA教程

java中在增強for循環(huán)為什么不能增刪集合呢?一個循環(huán)迭代,跟集合的增刪改沒什么關系。修改集合不是for去做的。for只管循環(huán)迭代,你在循環(huán)里邊修改集合,改變集合的長度,順序對循環(huán)都有影響

首先看下面的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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("還剩余的元素個數:"+list.size());
  }
}

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

看下面實際輸出的結果:

還剩余的元素個數:2

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

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

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

解決辦法:

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

更改后的核心代碼:

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

結果:

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美精品一区二区色综合 | 亚洲淫视频| 国产精品18久久久久久久久久久久 | 国产日韩欧美在线观看 | 亚洲精品一 | 在线视频一区二区 | 婷婷色av | 中文字幕国产在线视频 | 在线观看亚洲精品 | 色橹橹欧美在线观看视频高清 | 国产精品资源在线 | 亚洲天堂中文字幕在线观看 | 久久精品一区二区三区四区 | 天天澡天天狠天天天做 | 一级黄色录像在线观看 | k8久久久一区二区三区 | 毛片综合| 国产毛片欧美毛片久久久 | a视频网站 | 天天干人人 | 国产精品自产拍在线观看 | 99热精品国产 | 成人av观看 | 天堂资源最新在线 | 五月天婷婷免费视频 | 我要看一级黄色 | 日本中文一区二区 | 国产在线观看一区 | 中文字幕在线三区 | 欧美一区二区三区久久久久久桃花 | 黄色网址免费 | 日本福利在线观看 | 欧美精品一区二区三区蜜桃视频 | 日韩综合网 | 国产高清在线a视频大全 | 高清中文字幕 | 亚洲不卡 | 国产精品成人3p一区二区三区 | 久久99深爱久久99精品 | 亚洲在线播放 | 国产一区二区三区四区在线观看 |