Tout d'abord, jetons un coup d'œil aux exemples de code de deux structures de menu d'arborescence.
SingleTreenode:
package com.zzj.tree; public class singleTreenode {private int id; private int pid; name de chaîne privée; public singletreenode () {} public singleReenode (int id, int pid, nom de chaîne) {this.id = id; this.pid = pid; this.name = nom;} public int getId () {return id;} public void settid (in id) {this. 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 string public toString () {return "singleenode [id =" + id + ", pid =" + "," + "+" + "+ id +", pid = "+", ". "]";}}Cette structure est très adaptée au stockage dans les bases de données relationnelles.
Multitude:
package com.zzj.tree; import java.util.list; public class multitreenode {private int id; private string name; list private list <pritreenode> enfants; public multitreenode () {} public multitreenode (int id, chaîne name) {this.id = id; this.name = name;} public multitreenode (int id, string name, list <multitree>} public. id; this.name = name; this.children = enfants;} public int getID () {return id;} public void setid (int id) {this.id = id;} public string getName () {return nom;} public void setName (String name) {this.name = nom;} public list <multitreeenode> getChildRe setChildren (list <multitreenode> enfants) {this.children = enfants;} @ override public String toString () {return "multitreenode [id =" + id + ", name =" + name + ", enfants =" + enfants + "]";}}Deux convertisseurs
TOMULTITREETRANSFORMER:
package com.zzj.tree; import java.util.arraylist; import java.util.list; public class tomultitreeTransformrer {private list <singletreenode> singletreenodes; list private <mulTitreenodes> multitreenodes = new ArrayList <> (); public tomultreetransformmer (list <ingletreenodes> singleReenodes) {this.SingletReenodes = SingleTreenodes;} Liste publique <LatriteNode> Transform () {// Find All Root Nœuds pour (int i = 0; i <SingleTreenodes.Size (); i ++) {SingleTreenode SingleTreenodes.get (i); Boolean Isroot = True; pour (int j = 0; j <J <J <J <singreen. J ++) {singleTreenode temp = singleTreenodes.get (j); if (singleTreenode.getPid () == temp.getId ()) {isroot = false; Break;}} if (isroot) {mulTitreenode Multireenode = new Multreenode (singletreenode.getid (),, Multireenode = new Multreenode (SingleTreenode.getid (),, SingleTreenode.getName ()); multitreenodes.add (multitureenode);}} // définir le nœud enfant pour (int i = 0; i <multitreenodes.size (); i ++) {multitreenode multitreenode = mulTitreenodes.get (i); SetChildren (Multitreenode); Set child nœud * @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 <multitreenode> enfants = newtReenode.getChildren (); if (enfants == null) {enfants = newre ArrayList <> (); multitreenode.Setchildren (enfant);} enfants.add (enfant); setChildren (enfant);}}}}}TosingleTreeTransformateur:
package com.zzj.tree; import java.util.arraylist; import java.util.list; classe publique TosingLetReetFormer {Liste privée <LuStareenode> Multitreenodes; Liste privée <SingleTreenodes> SingleTreenodes = New ArrayList <> (); Public TosingleTransFormer (Liste <Multitreenodes> Multitreenodes) {this.MultiTreenodes = MultiTreenodes;} public List <SingleTreenode> transform () {// Obtenez le nœud racine pour (int i = 0; i <multitreenodes.size (); i ++) {multitreenode mulTitreenode = Multreenodes.get (i); SingleTreenode SingleTreenode = new SingleTreenode (Multreenode.getID (), 0, Multreenode.getName ()); SingleTreenodes.add (singleTreenode);} // Obtenez le nœud enfant pour (int i = 0; i <multitreenodes.size (); i ++) {multitreenode multitreenode = multifodes.get (i); getchildren (multifodéode);} retour singleenodes;} / ** * get child nate * / 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 (enfants! = null) {for (int j = 0; j <enfants.size (); j ++) {Multreenode child = enfants.get (j); Singleenode SingleTreneReenode = New SingletReende (Child.get. MultiTreenode.getId (), child.getName ()); SingleTreenodes.add (SingleTreenode); getchildren (enfant);}}}}}}}test
package com.zzj.tree; import java.util.arraylist; import java.util.list; classe publique TreetransorgeTest {Liste statique finale privée <SingletReenode> single_tree = new ArrayList <SingletReenode> (); statique {Singletreenode China = China (1, 1, 0, "Chine"); single_tree.add (China); = new 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(Hubei);SingleTreeNode Wuhan = new 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.Addd (California); New SingleTreenode (8, 7, "Los Angeles"); single_tree.add (Losangeles);} public static void main (String [] args) lève une exception {TOMULTITREETRANSORGER MULTITREETRANSFORMER = NOUVEAU TOMULTITREETRANSOROFRER (SOINTIERETREE); LIST <MultiTreenode> Multitreenodes = MultiTreeTransFormer.Transform (); System.out.println (MultiTreenodes); TosingleTreeTransFormer SingleTransFormer = new TosingleTreeTransFormer (SingleTreenodes); List <SingleTreenodes> SingleTreeNodes = SingleTreeTransFormer.TransForm (); System.out.trintln (SingleTreeTransFormer.TransForm (); System.out.TrINTRésultat de sortie:
[Multitrréenode [id = 1, name = chinois, enfants = [multitrréenode [id = 2, name = hunan, enfants = [multitureenode [id = 3, name = changesha, enfants = null]]]]], multifode [id = 4, name = hubei, enfants = [multifode [id = 5, name = wuhan, enfants = null]]], Nom = USA, Children = [Mulriteenode [id = 7, name = Californie, Children = [Multituenode [id = 8, name = los Angeles, Children = Null]]]]] [SingleTreenode [id = 1, pid = 0, name = ChinaEnode [id = 2, PID = 0, name = us], Singleenode [Id = 2, Pid = 1, Name = Us], Singleenode [id = 2, Pid = 1, Name = Us [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, nom = los angeles]]
Résumer
Ce qui précède est l'intégralité du contenu de cet article sur le code de conversion de deux structures de menu d'arborescence de la programmation Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à ce site:
Implémentation Java pour générer l'exemple de code complet de l'Excel Tree En-tête
La langue java décrit la profondeur et la largeur d'un arbre binaire
L'exemple de code complet de l'algorithme Java pour implémenter l'arbre rouge et noir
S'il y a des lacunes, veuillez laisser un message pour le signaler!