zoukankan      html  css  js  c++  java
  • Java中list集合遍历途中不能remove,但可以使用迭代器来删除

     简单点来说,在遍历途中是不能使用remove的

    for (SysMenu menu : sysMenuList) {
            if (menu.getId() == 1){
            sysMenuList.remove(menu);  //这样使用是错误的
         }
    }

    上面的代码是错的,因为使用remove把其中的一个实体移除了,整个list就变了,正在遍历的list突然就少了一条,怎么会不报错呢?

    这种问题就类似于:你要批量添加一些数据,先把它们装到一个list中,在list集合遍历途中去数据库查这些要添加

    进去的数据,压根还没添加进去,怎么会查的到嘛.

    要想做到上面代码理想中的操作,可以使用迭代器的remove,代码如下:

     //遍历删除,除去一级子菜单
     Iterator<SysMenu> iterator = sysMenuList.iterator();
     while (iterator.hasNext()) {
        SysMenu menu = iterator.next();
      if (menu.getParentId() != null && menu.getParentId() != 0) {
             iterator.remove();//使用迭代器的删除方法删除
       }
    }
  • 相关阅读:
    Day 03
    Day 02
    Day 01
    re正则表达四
    python学习05之数据可视化
    python学习04之柱形图和热图
    python学习03之线图表
    python的学习02之数据处理
    python的学习01之csv文件处理
    中国大学排名实例
  • 原文地址:https://www.cnblogs.com/hegeainiyo/p/13723478.html
Copyright © 2011-2022 走看看