zoukankan      html  css  js  c++  java
  • 【坑】Java中遍历递归删除List元素

    运行环境

    idea 2017.1.1

    需求背景

    需要做一个后台,可以编辑资源列表用于权限管理
    资源列表中可以有父子关系,假设根节点为0,以下以(父节点id,子节点id)表示

    当编辑某个资源时,需要带出该资源的可选父资源,如编辑2号资源,除了他自己不可以作为自己的父资源,其他资源均可以带出;若编辑3号资源,则只有0、1、2号资源可以带出,其他节点均是3号资源的子孙节点

    错误实现

    1、循环List

    查找所有有效节点
    循环List,删除其中当前编辑id的节点,对当前id的子节点递归调用该方法

    错误描述

    List循环过程中不能对当前List做add/remove操作,否则会抛出异常

    2、循环Iterator

    使用List的Iterator进行循环
    用Iterator.remove()进行删除【该方法可以很好的对List的元素进行操作,若是单层循环,推荐使用】

    错误描述

    该方法当遇到递归时,内层递归删除节点,外层的List仍然会抛出异常

    解决方法

    循环List,取出要删除的节点列表并返回给外层递归,最终获取所有要删除的元素,在最外层循环删除List中的节点

  • 相关阅读:
    fork()
    定时器
    epoll函数
    select函数
    高性能服务器程序框架
    socker地址API
    点击选中/取消选中flag
    html5的视频和音频
    html5
    JavaScript的string方法(demo)
  • 原文地址:https://www.cnblogs.com/shanelau/p/7059380.html
Copyright © 2011-2022 走看看