关闭

java list 迭代中能否删除?

标签: java迭代
126人阅读 评论(0) 收藏 举报

看到同事写的一段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 迭代过程中删除,这样的代码设计是不合理的。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:127次
    • 积分:11
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档