java中for循环删除集合陷阱

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32573251/article/details/78578615
因为集合的 大小是动态变化 的,当你删除一个元素之后,元素中的序号又重新排列,原来第二个应该删除的元素现在排在了第一个元素的位置,真正删除的却是第三个元素,依次类推,删除的是第一个、第三个、第五个

解决办法 

1.迭代器

Iterator<String> it = list.iterator();
while(it.hasNext()){
    String x = it.next();
    if(x.equals("del")){
        it.remove();
    }
}

2 . 究其原因是因为你要删除的元素往前面移动了,而你的i保存的值依旧往后走,所以如果让i不往后走,往前走一个,即可删除本来排在第二个位置的元素现在排在了第一个位置上的元素。
更改后的核心代码:
for(int i=0;i<list.size();i++){
      System.out.println("即将删除的元素:"+list.get(i));
      list.remove(i);
      i--;
    }


猜你喜欢

转载自blog.csdn.net/qq_32573251/article/details/78578615