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

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - ArrayList在for循環中使用remove方法移除元素方法介紹

ArrayList在for循環中使用remove方法移除元素方法介紹

2021-01-13 14:42性子有點污 Java教程

這篇文章主要介紹了ArrayList在for循環中使用remove方法移除元素的內容,介紹了具體代碼實現,需要的朋友可以參考下。

有時候我們需要在一個ArrayListfor循環中動態刪除元素的需求, 廢話不多說看代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
List<Integer> list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
//正常循環
for (int i = 0; i < list.size(); i++) {
 System.out.println("i的值:" + i + " 對應的數字:" + list.get(i));
}
System.out.println("沒有remove前list的項:"+list.size());
//邊循環邊刪除
for (int i = 0; i < list.size(); i++) {
 System.out.println("i的值:" + i + " 對應的數字:" + list.get(i));
 if(list.get(i) == 3) list.remove(list.get(i));//刪除list的第四項
}
System.out.println("remove后list的項:"+list.size());
System.out.println("==========remove后的list==========");
for (int i = 0; i < list.size(); i++) {
 System.out.println("i的值:" + i + " 對應的數字:" + list.get(i));
}

 

執行代碼, 結果如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
i的值:0 對應的數字:0
i的值:1 對應的數字:1
i的值:2 對應的數字:2
i的值:3 對應的數字:3
i的值:4 對應的數字:4
i的值:5 對應的數字:5
i的值:6 對應的數字:6
i的值:7 對應的數字:7
沒有remove前list的項:8
i的值:0 對應的數字:0
i的值:1 對應的數字:1
i的值:2 對應的數字:2
i的值:3 對應的數字:3
i的值:4 對應的數字:5
i的值:5 對應的數字:6
i的值:6 對應的數字:7
remove后list的項:7
==========remove后的list==========
i的值:0 對應的數字:0
i的值:1 對應的數字:1
i的值:2 對應的數字:2
i的值:3 對應的數字:4
i的值:4 對應的數字:5
i的值:5 對應的數字:6
i的值:6 對應的數字:7

可以看到沒有刪除前, 我們的list的項和循環對應的數字都是正確的, 但是下面的循環在刪除第4個元素后,第4,5,6個項對應的數字本應該是4,5,6, 但是這里卻變成了5,6,7.

原因是,我們刪除第4項后,list的長度就變成7,而且,list會把第4項后面的值往前移一位, 也就是說,i=3時,list.get(i)=4,i=4時,list.get(i)=5,i=5時,list.get(i)=6,i=6時,list.get(i)=7..  我們再說的形象一點, 就是本來有8層糕點,依次是0-7,豎起來,大的在上,小的在下,我們從下往上數,數到第5個的時候,吃掉這一層糕點,這時,上面三層分別往下移了一層
所以, 值為4的項我們根本沒有循環到

那有什么方法可以實現remove呢, 有個笨方法,是新建一個tempList, 把要刪除的項全部add進去,最后用list.removeAll(tempList)實現 . 但是這里我們有更好的方法, 就是倒序刪除

還是上面的例子, 我們看代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
List<Integer> list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
//正常循環
for (int i = 0; i < list.size(); i++) {
 System.out.println("i的值:" + i + " 對應的數字:" + list.get(i));
}
System.out.println("沒有remove前list的項:"+list.size());
 
//邊循環邊刪除
for (int i = list.size() -1 ; i >= 0; i--) {
 System.out.println("i的值 " + i + " 對應的數字 " + list.get(i));
 if(list.get(i) == 3) list.remove(list.get(i));
}
System.out.println("remove后list的項:"+list.size());
 
System.out.println("==========remove后的list==========");
for (int i = 0; i < list.size(); i++) {
 System.out.println("i的值 " + i + " 對應的數字 " + list.get(i));
}

執行代碼,結果如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
i的值:0 對應的數字:0
i的值:1 對應的數字:1
i的值:2 對應的數字:2
i的值:3 對應的數字:3
i的值:4 對應的數字:4
i的值:5 對應的數字:5
i的值:6 對應的數字:6
i的值:7 對應的數字:7
沒有remove前list的項:8
i的值 7 對應的數字 7
i的值 6 對應的數字 6
i的值 5 對應的數字 5
i的值 4 對應的數字 4
i的值 3 對應的數字 3
i的值 2 對應的數字 2
i的值 1 對應的數字 1
i的值 0 對應的數字 0
remove后list的項:7
==========remove后的list==========
i的值 0 對應的數字 0
i的值 1 對應的數字 1
i的值 2 對應的數字 2
i的值 3 對應的數字 4
i的值 4 對應的數字 5
i的值 5 對應的數字 6
i的值 6 對應的數字 7

我們可以看到變循環變刪除,并不影響后面的元素, remove后的list也和第一次的結果是一樣的 . 這是因為我們刪除list元素,list的長度是會變小, 但是變化的只是比當前被刪除元素的項大的項, 而我們這里使用倒序循環, 大的項, 我們已經執行過了, 所以不會影響.. 再用上面的比喻來說明,這次我們是從上往下數,數到第4個的時候,吃掉這一層糕點,這時,上面三層分別往下移了一層 , 但是這不影響我們之前數過的蛋糕, 而且對下面的蛋糕也不影響, 這就是原理

總結

以上就是本文關于ArrayList在for循環中使用remove方法移除元素方法介紹的全部內容,希望對大家有所幫助。感謝朋友們對服務器之家網站的支持。有什么問題或者想要了解的可以隨時給我們留言,小編會及時回復大家的。

原文鏈接:http://blog.csdn.net/u012316120/article/details/51509066

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 九九热在线视频 | 婷婷在线视频 | 欧美一级久久久 | 日韩精品在线视频 | 日本中文字幕在线视频 | 日韩综合| 成年人免费网站 | 亚洲欧美制服诱惑 | 久久综合久久综合久久综合 | 国产高潮国产高潮久久久91 | 国产综合久久久 | 国产精品18久久久 | 欧美激情国产精品 | 亚洲一区二区三区免费观看 | 久久久久久久久久久久国产 | 国产激情午夜 | 色图综合 | 日韩欧美在线观看一区二区三区 | 欧美在线日韩 | 欧美大片一区二区 | 久久久久久久久久久久国产 | 中文字幕日韩欧美一区二区三区 | www.av在线播放 | 久久久久91| 亚洲精品国产一区 | 三区视频 | 日韩免费 | 蜜桃视频成人在线观看 | 日韩在线一区二区 | 久久天堂电影 | 毛片网站在线 | 亚洲欧美日韩精品久久奇米色影视 | 美女国产精品 | 国产精品1区 | 国产色 | 国产成人精品一区二区在线 | 欧美a级免费看 | 91免费视频网站 | 久久综合五月 | www.久久 | 中文字幕精品一区 |