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 迭代过程中删除,这样的代码设计是不合理的。

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

异常信息: java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Ar...
  • supercooly
  • supercooly
  • 2015年09月09日 09:32
  • 6373

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

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

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

使用 for 循环 List list = new ArrayList(); list.add("1"); list.add("2"); list.ad...
  • cmder1000
  • cmder1000
  • 2017年06月29日 01:41
  • 1080

Java集合迭代时修改

Java集合迭代时修改 本文主要分如下几个要点: 0)Java集合分类 1)对于熟悉JDK集合源码的帮你加深对ConcurrentModificationException的下印象...
  • mayongzhan_csdn
  • mayongzhan_csdn
  • 2018年02月11日 12:09
  • 7

java之list源码浅析

三大数据结构链表、树和图,顺序表作为其中的一种,可以说是平时编程中最长使用到的。List接口是顺序表在java中的实现,它有很多子接口和实现类,平时的编程中使用起来非常方便。但是更进一步,我们有必要对...
  • windsunmoon
  • windsunmoon
  • 2015年06月06日 14:39
  • 4579

List的4种迭代方法

package com.hbut.test; import java.util.ArrayList; import java.util.Iterator; import java.util.Lis...
  • wickedvalley
  • wickedvalley
  • 2016年06月04日 15:25
  • 6944

JAVA List 迭代遍历案例

在工作中,经常会需要读取list数据。总结下平时工作中用到的一些方法。 首先来聚个简单地LIst例子。以及他们之间的区别: 实际案例: 方法一:使用for获取 package test.jav...
  • Tastill
  • Tastill
  • 2017年08月02日 16:18
  • 442

关于Java集合类迭代变量的修改

前几天和一个同事关于一个议题产生了疑虑:Java中对于
  • Enko_Wu
  • Enko_Wu
  • 2014年08月17日 15:00
  • 750

Java迭代器深入理解及使用

Iterator(迭代器)             作为一种设计模式,迭代器可以用于遍历一个对象,对于这个对象的底层结构开发人员不必去了解。        java中的Iterator一般称为“轻...
  • u012442401
  • u012442401
  • 2015年08月22日 01:21
  • 9730

利用Iterator删除集合元素

import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Iterator...
  • gjf281
  • gjf281
  • 2014年04月20日 19:59
  • 876
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java list 迭代中能否删除?
举报原因:
原因补充:

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