我是靠谱客的博主 风中草丛,最近开发中收集的这篇文章主要介绍Java中采用循环的方式移除list中某些元素的解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。

先给出总结:

只删除list中一个元素时:以上方式均可。

需要删除list中多个元素时可以使用:

                                     ······    1.for循环逆序

                                   ·········   2.iterator遍历。

给出原因:

1、for循环遍历list

for(int i = 0;i < list.size(); i++){
    if(list.get(i).equals("del"))
        list.remove(i);
}

      这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都往前移动了一位,所以实际访问的是第3个元素。因此,这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用。

    根据这个弊端,我们可以想到倒序循环:

for(int i = list.size() - 1; i >= 0 ; i--){
    if(list.get(i).equals("del"))
        list.remove(i);
}

倒序循环时删除了一个元素后,剩下的元素的索引并没有改变,所以根据索引 - 1指向下一个元素。

2、增强for循环

for(String x:list){
    if(x.equals("del"))
        list.remove(x);
}

       该方式在删除一个元素后继续循环会报错误信息java.util.ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。如果想看普通for循环和增强for循环的区别,请看:待定

 3、iterator迭代器遍历

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

  这种方式可以正常的循环及删除。但要注意的是,使用iterator的remove方法。不要使用list的remove方法,否则和前面的一样了。

最后

以上就是风中草丛为你收集整理的Java中采用循环的方式移除list中某些元素的解决方案的全部内容,希望文章能够帮你解决Java中采用循环的方式移除list中某些元素的解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部