반복 생성 논리 트리
3200 단어 Java 기반
package com.zhjg.tree;
import java.util.ArrayList;
import java.util.List;
public class TreeNode {
private String id;
private String name;
private String desc;
private String pid;
private List children;
public TreeNode() {
super();
}
public TreeNode(String id, String name, String desc, String pid) {
super();
this.id = id;
this.name = name;
this.desc = desc;
this.pid = pid;
this.children = new ArrayList();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
}
트리 구조의 클래스 생성(테스트에 fastjson의 종속성을 추가해야 함):
package com.zhjg.tree;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
/**
*
*
* @author 327084
*
*/
public class RecursiveTree {
/**
*
* @param nodes
* @return
*/
public static String switchNodeListToTree(List nodes){
TreeNode root = getRoot(nodes);
root = recursive(root, nodes);
return JSON.toJSONString(root, true);
}
/**
*
* @param node
* @param nodes
* @return
*/
public static TreeNode recursive(TreeNode node, List nodes){
for (TreeNode treeNode : nodes) {
if(treeNode.getPid().equals(node.getId())){//
node.getChildren().add(treeNode);
recursive(treeNode, nodes);
}
}
return node;
}
/**
*
* @param nodes
* @return
*/
public static TreeNode getRoot(List nodes){
TreeNode root = null;
if(nodes != null && nodes.size() > 0){
for (TreeNode treeNode : nodes) {
if("".equals(treeNode.getPid())){
root = treeNode;
break;
}
}
}
return root;
}
/**
*
* @param args
*/
public static void main(String[] args) {
TreeNode root = new TreeNode("1", " ", " ", "");
TreeNode node1 = new TreeNode("11", " ", " ", "1");
TreeNode node2 = new TreeNode("12", " ", " ", "1");
TreeNode node3 = new TreeNode("13", " ", " ", "1");
TreeNode node4 = new TreeNode("131", " ", " ", "13");
TreeNode node5 = new TreeNode("1311", " ", " ", "131");
TreeNode node6 = new TreeNode("111", " ", " ", "11");
List nodes = new ArrayList();
nodes.add(root);
nodes.add(node1);
nodes.add(node2);
nodes.add(node3);
nodes.add(node4);
nodes.add(node5);
nodes.add(node6);
System.out.println(switchNodeListToTree(nodes));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다 FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.