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();//使用迭代器的删除方法删除
       }
    }
  • 相关阅读:
    Android培训准备资料之Android开发环境的搭建
    第二十天
    第十九天
    第十八天
    第十七天
    第十六天
    第十四天
    第十三天
    十二天
    十一天
  • 原文地址:https://www.cnblogs.com/hegeainiyo/p/13723478.html
Copyright © 2011-2022 走看看