• 【坑】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中的节点

  • 相关阅读:
    机器学习——逻辑回归(Logistic Regression)
    [BUUCTF]PWN4——pwn1_sctf_2016
    [BUUCTF]PWN1——test_your_nc
    [BUUCTF]PWN2——rip
    vuex状态管理详细使用方法
    微信小程序入门
    条件渲染vue
    vue-cli安装方法
    JavaScript逻辑运算符
    JavaScript的基本介绍
  • 原文地址:https://www.cnblogs.com/shanelau/p/7059380.html
Copyright © 2020-2023  润新知