递归的方法列表转树形结构

@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;
    }

}
posted @ 2022-12-19 11:53  路暝月  阅读(10)  评论(0)    收藏  举报  来源