자바 를 사용 하여 하나의 List 를 재 귀적 으로 트 리 구조 사례 로 변환 합 니 다.

개발 과정 에서 우 리 는 서로 다른 조직 구 조 를 트 리 라 는 나무 구조 로 통합 하 는 것 을 만 날 수 있다.그렇다면 어떻게 할 까?
실제로 부자 관 계 를 가 진 list 를 트 리 구조 로 바 꾸 는 방법 으로 도 이해 할 수 있 는데 그 중에서 도 중요 한 방법 은 재 귀 하 는 것 이다!
1.실체 대상:

@Data
public class Node {
    private Integer id;
    private String city;
    private Integer pid;

    private List<Node> children;

    public Node(Integer id,String city,Integer pid){
        this.id = id;
        this.city = city;
        this.pid = pid;
    }
}
2.변환 도구 종류:

public class TreeUtils {

    //   List   
    static List<Node> buildTree(List<Node> list,Integer pid){
        List<Node> tree=new ArrayList<>();
        for(Node node:list){
            if(Objects.equals(node.getPid(),pid)){
                tree.add(findChild(node,list));
            }
        }
        return tree;
    }

    static Node findChild(Node node, List<Node> list){
        for(Node n:list){
            if(Objects.equals(n.getPid(),node.getId())){
                if(node.getChildren() == null){
                    node.setChildren(new ArrayList<Node>());
                }
                node.getChildren().add(findChild(n,list));
            }
        }
        return node;
    }

    public static void main(String[] args) {
        Node node0=new Node(0,"  ",-1);
        Node node1=new Node(1,"   ",0);
        Node node2=new Node(2,"   ",1);
        Node node3=new Node(3,"   ",2);
        Node node4=new Node(4,"   ",1);
        Node node5=new Node(5,"   ",0);
        Node node6=new Node(6,"   ",5);
        List<Node> list=new ArrayList<>();


        list.add(node3);
        list.add(node4);
        list.add(node1);
        list.add(node2);
        list.add(node5);
        list.add(node6);
        list.add(node0);
        List<Node> nodes = buildTree(list,-1);
        System.out.println(JSON.toJSONString(nodes));
    }
}
3.실행 결과:
在这里插入图片描述
이렇게 해서 list 는 트 리 구조 로 성공 적 으로 바 뀌 었 습 니 다.
자바 를 사용 하여 하나의 List 를 재 귀적 으로 트 리 구조 로 전환 하 는 사례 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 가 list 를 트 리 구조 로 활용 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기