Во -первых, давайте посмотрим на примеры кода двух структур меню дерева.
SingleTreeNode:
Пакет com.zzj.tree; открытый класс 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 inted () {return id;} public setId (это. 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;}@overde public String toString () {return " "]";}}Эта структура очень подходит для хранения в реляционных базах данных.
MultiTreeNode:
пакет com.zzj.tree; import java.util.list; public class multiTreeNode {private int id; private String name; Private List <MultiTreeNode> дети; public multiTreenode () {} public multiTreenode (int id, string name) {this.id = id; this.name = name;} public multireDode (int id, string, name = inte. id; this.name = name; this.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 () {strate gilden; {return gils wised; SetChildren (список <multiTreeNode> дети) {this.children = дети;}@переопределять публичную строку toString () {return "multiTreeNode [id =" + id + ", name =" + name + ", kids =" + kids + "]";}}Два конвертера
Tomultitreetransformer:
Пакет com.zzj.tree; импорт java.util.arraylist; import java.util.list; открытый класс TomultItreetransformer {private list <ingletreenode> singletreeNodes; частный список <multiTreenodes> MultiTreeNodes = new ArrayList <> (); public tomultreetransformer (списки <singletrees> raylist <> (); {this.singletReenodes = singletReenodes;} public list <listreenode> transform () {// сначала находить все корневые узлы для (int i = 0; i <singletreenodes.size (); i ++) {singletreenode singletreenodes.get (i); boolean isroot = true; for (int j = 0; j ++) {singletReenode temp = singletReenodes.get (j); if (singletReenode.getpid () == temp.getid ()) {isroot = false; brea SingletReenode.getName ()); MultiTreeNodes.Add (MultiTreeNode);}} // Установить дочерний узел для (int i = 0; i <multiTreeNodes.size (); i ++) {multiTreeNode multiTreeNode = multiTreeNodes.get (i); SetChildREN (MultiTreenode); Установить детский узел * @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 ()); список <multiTreeNode> kids = multiTreeNode.getChildren (); if (дети = null) {дети = новый ArrayList <> (); MultiTreeNode.setchildren (Child);} Children.Add (Child); SetChildren (Child);}}}}}Tosingletreatransformer:
Пакет com.zzj.tree; импорт java.util.arraylist; import java.util.list; открытый класс TosingTreetransformer {Private List <MultiTreeNode> MultiTreenodes; частный список <ingletreenodes> singletreenodes = new ArrayList <> (); publicletretransformer (multletreenodes> {this.multiTreeNodes = multiTreenodes;} public List <singletReenode> transform () {// Получить корневой узел для (int i = 0; i <multiTreeNodes.size (); i ++) {MultiTreeNode MultiTreeNode = multiTreeNodes.get (i); Singletreenode singletreenode = new singletreenode (multiTreenode.getId (), 0, multiTreeNode.getName ()); SingletReenodes.Add (singletReenode);} // Получить детский узел для (int i = 0; i <multiTreeNodes.size (); i ++) {MultiTreeNode multiTreeNode = MultiTreeNodes.get (i); getChildren (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 <multiTreeNode> child = multiTreeNode.getChildren (); if (дети! MultiTreeNode.getId (), child.getName ()); SingletReenodes.Add (singletReenode); getChildren (Child);}}}}}}}тест
Пакет com.zzj.tree; импорт java.util.arraylist; import java.util.list; открытый класс Treetransformertest {private final Static Sist <singletreenode> single_tree = new Arraylist <ingletreenode> (); static {singletreenode wink = new Singletreenode (1, 0, "Китай"); = new SingletReenode (2, 1, "hunan"); single_tree.add (hunan); singletreenode changsha = new singletreenode (3, 2, "changsha"); single_tree.add (changsha); singletreenode hubei = new singletreode (4, 1, "hubei"); Wuhan = new Singletreenode (5, 4, "wuhan"); single_tree.add (wuhan); singletreenode america = new Singletreenode (6, 0, "Соединенные Штаты"); Single_tree.add (Америка); Singletreenode Calialia = new Singletreode (7, 6, "California"); SingletReenode (8, 7, "Los Angeles"); Single_tree.add (losangeles);} public static void main (string [] args) бросает исключение {tomultitreetransformer multiTreeTransformer = new tomultitreetransformer (single_tree); список <multiTreeNode> multiTreeNodes = = = = = = MultiTreetransformer.transform (); System.out.println (MultiTreeNodes); ToseleTreatransformer SingleTreetransformer = new ToseleTreatransformer (MultiTreeNodes); List <ingletreenodes> singletreenodes = singletransformer.transform ();Результат вывода:
[MultiTreeNode [id = 1, name = China, Children = [MultiTreeNode [id = 2, name = hunan, kids = [multiTreeNode [id = 3, name = changsha, дети = null]]], мультитреенод [id = 4, name = hubei, дети = [multiTreeNode [id = 5, wame = wuhan, дети = null], [id = name = wuhan, wyl null] [id = name = wh name = usa, дети = [MultiTreeNode [id = 7, name = california, kids = [multiTreeNode [id = 8, name = los Angeles, дети = null]]]]] [singletreenode [id = 1, pid = 0, name = china], singletreenode [id = 6, pid = 0, name = us], singletreenode [id = 1, pide) name = name = name = name = name = name = name = 1, name = name = name = name = 1, name = name = name) [id = 6, pid = 0, name = us], singletreenode [id = name), [id = 3, pid = 2, name = changsha], singletreenode [id = 4, pid = 1, name = hubei], singletreenode [id = 5, pid = 4, name = wuhan], singletreenode [id = 7, pid = 6, имя = калифорния], singletreenode [id = 8, pid = 7, name = los angeles]]
Суммировать
Выше приведено все содержание этой статьи о коде преобразования двух структур меню дерева программирования Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Реализация Java для создания полного примера кода Excel Tree
Язык Java описывает глубину и ширину бинарного дерева
Полный пример кода алгоритма Java для реализации красного и черного дерева
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это!