java list 迭代中能否删除?

原创 2016年08月28日 21:08:46

看到同事写的一段code,说java可以在for 迭代过程中remove一个元素。太奇怪了,请看下面一段code, 居然没有抱错。

public class Solution {

  private void  test(){
    
        List<String> noWantedList = new ArrayList<String>(Arrays.asList(new String[] { "pm_data", "pmd",
                "gte.config",
                "systemfiles", "license","node_id", "node_identity.txt",
                "tmp", "logfiles", "configuration", "security",
                "public_html","usr" }));
            String test="security";
            for (String regex : noWantedList) {
        if(test.equals(regex))
        {
        noWantedList.remove("security");
        }
        return ; //here
        }
    }


public static void main(String[] args) {

Solution solution=new Solution();
solution.test();
}
}


这和我印象中只有用iterator 迭代过程中可以删除,而且只有用iter.remove()相矛盾呀。

经过仔细琢磨,原来上面代码能通过是在通过remove之后,直接就return了,没有继续迭代,所以才不抱错。

不过个人觉得还是不要在for 迭代过程中删除,这样的代码设计是不合理的。

正确移除List中对象

list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?() Iterator i...

Java中List迭代过程中删除、新增元素的处理

异常信息: java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Ar...

利用Java迭代器删除list中元素

利用Java迭代器删除list中元素昨天晚上,老师问了一个问题:Java中怎么删除list中指定位置的元素,提示是用迭代器。简单实现如下: import java.awt.List; import j...

集合在迭代过程中能否添加、删除或修改元素

使用 for 循环 List list = new ArrayList(); list.add("1"); list.add("2"); list.ad...

如何在list中删除我指定的对象

用for-each遍历 实际上使用的是Iterator迭代器 Iterator的工作机制: Iterator是工作在一个独立的线程中,并且拥有一个 mutex锁,就是说Iterator在工作的时候...

Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)

原题: 创建一个 List,在 List 中增加三个工人,基本信息如下: 姓名   年龄    工资 zhang3 18      3000 li4    25      3500 wang5 ...

黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点

------- Java EE培训、java培训、期待与您交流! ----------

Java基础:循环迭代Array/List/Set/Map集合 增强for循环

书香年华 琅琅书声如春风拂过千年时空 少年啊壮志在胸赋首辞让人感动!

struts2迭代 Map List

  • 2013年04月08日 22:39
  • 3.34MB
  • 下载

List迭代过滤操作注意点

今天在写一段很简单的代码,本来以为肯定没什么问题,然后直接跑的时候,吆,简单的一个List的操作报错了。仔细一看代码,确实有问题,但是一般真的是如果稍微不小心就会犯下面这种愚蠢的操作。 这里我把代码...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java list 迭代中能否删除?
举报原因:
原因补充:

(最多只允许输入30个字)