1. 程式人生 > 實用技巧 >Java實現 List轉JSONTree形式,兩種常用方式

Java實現 List轉JSONTree形式,兩種常用方式

import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;

public class TreeNode {
    private Integer id;
    private Integer pid;
    private String name;
    private  List<TreeNode> children;

    public TreeNode() {
    }

    public TreeNode(Integer id, Integer pid, String name) {
        
this.id = id; this.pid = pid; this.name = name; } public TreeNode(Integer id, Integer pid, String name, List<TreeNode> children) { this.id = id; this.pid = pid; this.name = name; this.children = children; } public Integer getId() {
return id; } public void setId(Integer id) { this.id = id; } public Integer getPid() { return pid; } public void setPid(Integer pid) { this.pid = pid; } public String getName() { return name; } public void setName(String name) {
this.name = name; } public List<TreeNode> getChildren() { return children; } public void setChildren(List<TreeNode> children) { this.children = children; } // 定義轉換方法1 public static List<TreeNode> listGetTree(List<TreeNode> list){ List<TreeNode> treelist = new ArrayList<>(); for(TreeNode treeNode:list){ // 找到各個父根,直接插入到treeList中,作為初始節點s if(treeNode.getPid() == 0){ treelist.add(treeNode); } // 找到子 for(TreeNode treeNode1:list){ if(treeNode1.getPid() == treeNode.getId()){ if(treeNode.getChildren() ==null){ treeNode.setChildren(new ArrayList<TreeNode>()); } treeNode.getChildren().add(treeNode1); } } } return treelist; } // 方法二,先找最父級節點,然後遞迴找子 public static List<TreeNode> listToTreeByRecursion(List<TreeNode> list){ // 先找到最初的父節點 List<TreeNode> treeNodeList = new ArrayList<>(); for(TreeNode treeNode: list){ if(treeNode.getPid() == 0){ treeNodeList.add(findChildren(treeNode, list)); } } return treeNodeList; } public static TreeNode findChildren(TreeNode treeNode, List<TreeNode> list){ // 根據父節點去遞迴找子 for(TreeNode treeNode1: list){ if(treeNode1.getId() == treeNode.getPid()){ if(treeNode.getChildren()==null){ treeNode.setChildren(new ArrayList<TreeNode>()); treeNode.getChildren().add(findChildren(treeNode1, list)); } } } return treeNode; } public static void main(String[] args) { List<TreeNode> list = new ArrayList<TreeNode>(); list.add(new TreeNode(1,0,"1")); list.add(new TreeNode(2,1,"2")); list.add(new TreeNode(3,2,"3")); list.add(new TreeNode(11,0,"11")); list.add(new TreeNode(21,11,"21")); list.add(new TreeNode(31,21,"31")); // 方法一 List<TreeNode> treelist = new ArrayList<TreeNode>(); treelist = listGetTree(list); // 方式二 System.out.println("方式一:" + JSON.toJSON(treelist)); List<TreeNode> treelist1 = new ArrayList<TreeNode>(); treelist1 = listToTreeByRecursion(list); System.out.println("方式二:" + JSON.toJSON(treelist1)); } }