【坑】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中的節點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM