java 프로그래밍 두 가지 트리 메뉴 구조의 변환 코드
SingleTreeNode:
package com.zzj.tree;
public class SingleTreeNode {
private int id;
private int pId;
private String name;
public SingleTreeNode() {
}
public SingleTreeNode(int id, int pId, String name) {
this.id = id;
this.pId = pId;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getpId() {
return pId;
}
public void setpId(int pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "SingleTreeNode [id=" + id + ", pId=" + pId + ", name=" + name + "]";
}
}
이런 구조는 관계형 데이터베이스에 저장하기에 매우 적합하다.
MultiTreeNode:
package com.zzj.tree;
import java.util.List;
public class MultiTreeNode {
private int id;
private String name;
private List children;
public MultiTreeNode() {
}
public MultiTreeNode(int id, String name) {
this.id = id;
this.name = name;
}
public MultiTreeNode(int id, String name, List children) {
this.id = id;
this.name = name;
this.children = children;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
@Override
public String toString() {
return "MultiTreeNode [id=" + id + ", name=" + name + ", children=" + children + "]";
}
}
두 변환기
ToMultiTreeTransformer:
package com.zzj.tree;
import java.util.ArrayList;
import java.util.List;
public class ToMultiTreeTransformer {
private List singleTreeNodes;
private List multiTreeNodes = new ArrayList<>();
public ToMultiTreeTransformer(List singleTreeNodes) {
this.singleTreeNodes = singleTreeNodes;
}
public List transform(){
//
for (int i = 0; i < singleTreeNodes.size(); i++) {
SingleTreeNode singleTreeNode = singleTreeNodes.get(i);
Boolean isRoot = true;
for (int j = 0; j < singleTreeNodes.size(); j++) {
SingleTreeNode temp = singleTreeNodes.get(j);
if (singleTreeNode.getpId() == temp.getId()) {
isRoot = false;
break;
}
}
if (isRoot) {
MultiTreeNode multiTreeNode = new MultiTreeNode(singleTreeNode.getId(),
singleTreeNode.getName());
multiTreeNodes.add(multiTreeNode);
}
}
//
for (int i = 0; i < multiTreeNodes.size(); i++) {
MultiTreeNode multiTreeNode = multiTreeNodes.get(i);
setChildren(multiTreeNode);
}
return multiTreeNodes;
}
/**
*
* @param multiTreeNode
*/
private void setChildren(MultiTreeNode multiTreeNode){
for (int j = 0; j < singleTreeNodes.size(); j++) {
SingleTreeNode temp = singleTreeNodes.get(j);
if (temp.getpId() == multiTreeNode.getId()) {
MultiTreeNode child = new MultiTreeNode(temp.getId(),
temp.getName());
List children = multiTreeNode.getChildren();
if (children == null) {
children = new ArrayList<>();
multiTreeNode.setChildren(children);
}
children.add(child);
setChildren(child);
}
}
}
}
ToSingleTreeTransformer:
package com.zzj.tree;
import java.util.ArrayList;
import java.util.List;
public class ToSingleTreeTransformer {
private List multiTreeNodes;
private List singleTreeNodes = new ArrayList<>();
public ToSingleTreeTransformer(List multiTreeNodes) {
this.multiTreeNodes = multiTreeNodes;
}
public List transform(){
//
for (int i = 0; i < multiTreeNodes.size(); i++) {
MultiTreeNode multiTreeNode = multiTreeNodes.get(i);
SingleTreeNode singleTreeNode = new SingleTreeNode(multiTreeNode.getId(),
0, multiTreeNode.getName());
singleTreeNodes.add(singleTreeNode);
}
//
for (int i = 0; i < multiTreeNodes.size(); i++) {
MultiTreeNode multiTreeNode = multiTreeNodes.get(i);
getChildren(multiTreeNode);
}
return singleTreeNodes;
}
/**
*
* @param multiTreeNode
*/
private void getChildren(MultiTreeNode multiTreeNode){
for (int i = 0; i < singleTreeNodes.size(); i++) {
SingleTreeNode temp = singleTreeNodes.get(i);
if (multiTreeNode.getId() == temp.getId()) {
List children = multiTreeNode.getChildren();
if (children != null) {
for (int j = 0; j < children.size(); j++) {
MultiTreeNode child = children.get(j);
SingleTreeNode singleTreeNode = new SingleTreeNode(child.getId(),
multiTreeNode.getId(), child.getName());
singleTreeNodes.add(singleTreeNode);
getChildren(child);
}
}
}
}
}
}
테스트
package com.zzj.tree;
import java.util.ArrayList;
import java.util.List;
public class TreeTransformerTest {
private final static List SINGLE_TREE = new ArrayList();
static {
SingleTreeNode China = new SingleTreeNode(1, 0, " ");
SINGLE_TREE.add(China);
SingleTreeNode Hunan = new SingleTreeNode(2, 1, " ");
SINGLE_TREE.add(Hunan);
SingleTreeNode Changsha = new SingleTreeNode(3, 2, " ");
SINGLE_TREE.add(Changsha);
SingleTreeNode Hubei = new SingleTreeNode(4, 1, " ");
SINGLE_TREE.add(Hubei);
SingleTreeNode Wuhan = new SingleTreeNode(5, 4, " ");
SINGLE_TREE.add(Wuhan);
SingleTreeNode America = new SingleTreeNode(6, 0, " ");
SINGLE_TREE.add(America);
SingleTreeNode California = new SingleTreeNode(7, 6, " ");
SINGLE_TREE.add(California);
SingleTreeNode LosAngeles = new SingleTreeNode(8, 7, " ");
SINGLE_TREE.add(LosAngeles);
}
public static void main(String[] args) throws Exception {
ToMultiTreeTransformer multiTreeTransformer = new ToMultiTreeTransformer(SINGLE_TREE);
List multiTreeNodes = multiTreeTransformer.transform();
System.out.println(multiTreeNodes);
ToSingleTreeTransformer singleTreeTransformer = new ToSingleTreeTransformer(multiTreeNodes);
List singleTreeNodes = singleTreeTransformer.transform();
System.out.println(singleTreeNodes);
}
}
결과 출력:
[MultiTreeNode [id=1, name= , children=[MultiTreeNode [id=2, name= , children=[MultiTreeNode [id=3, name= , children=null]]], MultiTreeNode [id=4, name= , children=[MultiTreeNode [id=5, name= , children=null]]]]], MultiTreeNode [id=6, name= , children=[MultiTreeNode [id=7, name= , children=[MultiTreeNode [id=8, name= , children=null]]]]]]
[SingleTreeNode [id=1, pId=0, name= ], SingleTreeNode [id=6, pId=0, name= ], SingleTreeNode [id=2, pId=1, name= ], SingleTreeNode [id=3, pId=2, name= ], SingleTreeNode [id=4, pId=1, name= ], SingleTreeNode [id=5, pId=4, name= ], SingleTreeNode [id=7, pId=6, name= ], SingleTreeNode [id=8, pId=7, name= ]]
총결산
이상은 본고의 자바프로그래밍 두 가지 트리 메뉴 구조에 대한 변환 코드의 전체 내용입니다. 여러분께 도움이 되었으면 합니다.관심 있는 사람은 이 사이트를 계속 참조하십시오.
Java Excel 트리 헤더 전체 코드 생성 예제
Java 언어는 두 갈래 트리의 깊이와 너비를 설명합니다
java 알고리즘 구현 빨간색 검은색 트리 전체 코드 예시
부족한 점이 있으면 댓글로 지적해 주시기를 환영합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.