1. 程式人生 > >遞迴查詢檔案及其子檔案(需傳入一棵樹和id)

遞迴查詢檔案及其子檔案(需傳入一棵樹和id)

首先明確大致的思路: 1.已知的資料有整棵樹 和 要刪除資料的id 2.根據id能夠查到其在 樹中對應的List(需遍歷) 3.找到List後確定要刪除List的children(treeNode.getId()==id) 4.判斷找到的treeNode是否有children(整理思路時發現似乎並沒有必要 因為有第三步) 5.找到children然後刪除(因為可能是兩個及以上的children所以用了一個遍歷) 在此可以用遞迴 將children所在的樹和children的id 作為引數 將children的children刪除

注:folderMapper.delete(id)方法是將del欄位置為1 不是真正的刪除 刪除不能用foreach!!!

private void deleteChildren(List treeNodes, Long id) { //根據id查詢TreeNode for (TreeNode treeNode:treeNodes) { if(treeNode.getId()==id){ folderMapper.delete(id);//找到一個則置為1

if (treeNode.getChildren()!=null){//使用.size()會有空指標異常

//遍歷刪除所有children 因為能get到的Children可能不止一個 所以需要遍歷 for (TreeNode listTree:treeNode.getChildren()) { folderMapper.delete(listTree.getId());//每找到一個依然置為1

//遞迴 方法中傳遞的引數為(找到的好多children, 每一次遍歷都是一個children的id) deleteChildren(treeNode.getChildren(), listTree.getId()); } }else { return “id:”+id+”刪除成功”; } } } }