Schauen wir uns zunächst die Codebeispiele zweier Baummenüstrukturen an.
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 + "]";}}Diese Struktur eignet sich sehr für die Speicherung in relationalen Datenbanken.
Multitreenode:
package com.zzj.tree;import java.util.List;public class MultiTreeNode {private int id;private String name;private List<MultiTreeNode> children;public MultiTreeNode() {}public MultiTreeNode(int id, String name) {this.id = id;this.name = name;}public MultiTreeNode(int id, String name, List<MultiTreeNode> 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<MultiTreeNode> getChildren() {return children;}public void setChildren(List<MultiTreeNode> children) {this.Children = children;}@override public String toString () {return "multitreenode [id =" + id + ", name =" + name + ", childhes =" + childhes + "]";}}Zwei Konverter
Tomultitreetransformator:
package com.zzj.tree;import java.util.ArrayList;import java.util.List;public class ToMultiTreeTransformer {private List<SingleTreeNode> singleTreeNodes;private List<MultiTreeNodes> multiTreeNodes = new ArrayList<>();public ToMultiTreeTransformer(List<SingleTreeNodes> singleTreeNodes) {this.singleTreeNodes = Singletreenodes;} öffentliche Liste <Multitreenode> transform () {// Finden Sie zuerst alle Root -Knoten für (int i = 0; i <Singletreenodes.size (); i ++) {Singletreenode Singletreenodes.get (i); boolean isroot = true; Singletreenodes.get (j); if (Singletreenode.getPID () == temp.getId ()) {isroot = false; break;}} if (isroot) {multitreenode multitreenode = new Multitreenode (Singletreenode.GetID (), multitreenode (multitreenode); (int i = 0; i <multitreenodes.size (); i ++) {multitreenode multitreenode = multitreenodes.get (i); setChildren (multitreenode)} multitreenodes return; Singletreenodes.size (); if (temp.getPid () == multitreenode.getId ()) {multitreenode child = new Multitreenode (temp.getId (), temp.getName ()); list <multitreenode> childhes = multiTreenode.getchildren (); if (childhus == null) {chirids = new New = new New = new New = new New = New = new New = New = New = New = New = New = New = New = New = New = New = New = New = New = New = New = New = New = new = new New. ArrayList <> (); Multitreenode.setchildren (Kind);} Kinder.Add (Kind); setChildren (child);}}}}}TosingleTreeTransformer:
package com.zzj.tree;import java.util.ArrayList;import java.util.List;public class ToSingleTreeTransformer {private List<MultiTreeNode> multiTreeNodes;private List<SingleTreeNodes> singleTreeNodes = new ArrayList<>();public ToSingleTreeTransformer(List<MultiTreeNodes> multiTreeNodes) {this.multiTreeNodes = Multitreenodes;} öffentliche Liste <Singletreenode> Transform () {// Holen Sie sich den Stammknoten für (int i = 0; i <multitreenodes.size (); i ++) {multitreenode multitreenode = multiTreenodes.gets.get (i); Singletreenode Singletreenode = new Singletreenode (multitreenode.getId (), 0, multitreenode.getName ()); singleTreeNodes.add(singleTreeNode);}// Get the child node for (int i = 0; i < multiTreeNodes.size(); i++) {MultiTreeNode multiTreeNode = multiTreeNodes.get(i);getChildren(multiTreeNode);}return singleTreeNodes;}/** * Get child node* @param multiTreeNode */private void getChildren (multitreenode multitreenode) {für (int i = 0; i <Singletreenodes.size (); i ++) {Singletreenode temp = Singletreenodes.get (i); if (multitreenode.getId () == temp.getId ()) {list <multitreenode> child = multitreenode.getChildren (); if (childnes! Multitreenode.getId (), child.getName ()); Singletreenodes.Add (Singletreenode); getChildren (Child);}}}}}}}prüfen
Paket com.zzj.tree; import Java.util.ArrayList; import Java.util.list; öffentliche Klasse Treetransformertest {private endgültige statische Liste <Singletreenode> Single_Tree = new ArrayList <Singletreenode> (); Static {Singletreenode China = New Singletreenode (1, 0, "China"); China "); China"); Singletreenode (2, 1, "Hunan"); Single_tree.Add (Hunan); Singletreenode Changsha = New Singletreenode (3, 2, "Changsha"); Single_Tree.add (Changsha); Singletreenode hubei = New Singletreenode (4, 1, Hubei "); Single_tree.add (Hube); SingleTreeNode(5, 4, "Wuhan");SINGLE_TREE.add(Wuhan);SingleTreeNode America = new SingleTreeNode(6, 0, "United States");SINGLE_TREE.add(America);SingleTreeNode California = new SingleTreeNode(7, 6, "California");SINGLE_TREE.add(California);SingleTreeNode LosAngeles = new SingleTreeNode(8, 7, "Los Angeles "); Single_tree.Add (losAngeles);} öffentliche statische void main (String [] args) löst eine Ausnahme aus {TomultitreetRansformer MultitreetRansformer = new TomultitreetRansformer (Single_tree); List <Multitreenode> multitreenodes = MultitreetRansformer.transform (); System.out.println (Multitreenodes); TosintleTreetRansformer SingletreTransformer = neuer TosinTReTreEtransformer (Multitreenodes); list <Singletreenodes> Singletreenodes = SingletReTRansformer.Transform ();Ausgangsergebnis:
[MultiTreeNode [id=1, name=China, children=[MultiTreeNode [id=2, name=Hunan, children=[MultiTreeNode [id=3, name=Changsha, children=null]]]], MultiTreeNode [id=4, name=Hubei, children=[MultiTreeNode [id=5, name=Wuhan, children=null]]]]], MultiTreeNode [id=6, name=USA, children=[MultiTreeNode [id=7, name=California, children=[MultiTreeNode [id=8, name=Los Angeles, children=null]]]]]] [SingleTreeNode [id=1, pId=0, name=China], SingleTreeNode [id=6, pId=0, name=US], SingleTreeNode [id=2, pId=1, name=Hunan], SingleTreeNode [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, name = California], Singletreenode [id = 8, pid = 7, name = los Angeles]]]
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über den Conversion -Code von zwei Baummenüstrukturen der Java -Programmierung. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Java -Implementierung zum Generieren des vollständigen Codebeispiels für Excel Tree Header
Die Java -Sprache beschreibt die Tiefe und Breite eines binären Baums
Das vollständige Codebeispiel des Java -Algorithmus zur Implementierung des roten und schwarzen Baumes
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen!