gpt4 book ai didi

java中for循环删除集合陷阱

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java中for循环删除集合陷阱由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

首先看下面的代码:

?
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++){ //循环删除集合中的元素
       list.remove(i);
     }
     System.out.println( "还剩余的元素个数:" +list.size());
   }
}

上述的代码按照思路应该是对的,输出的结果也应该是0 。

看下面实际输出的结果:

还剩余的元素个数:2 。

你也许会问为什么呢?因为集合的大小是动态变化的,当你删除一个元素之后,元素中的序号又重新排列,原来第二个应该删除的元素现在排在了第一个元素的位置,真正删除的却是第三个元素,依次类推,删除的是第一个、第三个、第五个、、、、如果在原来删除的代码中加入语句: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 。

以上所述就是本文的全部内容了,希望大家能够喜欢.

最后此篇关于java中for循环删除集合陷阱的文章就讲到这里了,如果你想了解更多关于java中for循环删除集合陷阱的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com