遞歸的方法列表轉樹形結構

@Data
public class SysCityDTO {
    private Long id;
    private String name;
    private Long pid;
    private List<SysCityDTO> children;

    public static List<SysCityDTO> listToTree(List<SysCityDTO> list, int pid) {
        //用遞歸找子。
        List<SysCityDTO> treeList = new ArrayList<>();
        for (SysCityDTO tree : list) {
            if (tree.getPid() == pid) {
                treeList.add(findChildren(tree, list));
            }
        }
        return treeList;
    }

    private static SysCityDTO findChildren(SysCityDTO tree, List<SysCityDTO> list) {
        for (SysCityDTO node : list) {
            if (node.getPid().equals(tree.getId())) {
                if (tree.getChildren() == null) {
                    tree.setChildren(new ArrayList<>());
                }
                tree.getChildren().add(findChildren(node, list));
            }
        }
        return tree;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章