激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java編程兩種樹形菜單結構的轉換代碼

java編程兩種樹形菜單結構的轉換代碼

2021-03-01 14:07zhangzeyuaaa Java教程

這篇文章主要介紹了java編程兩種樹形菜單結構的轉換代碼,首先介紹了兩種樹形菜單結構的代碼,然后展示了轉換器實例代碼,最后分享了相關實例及結果演示,具有一定借鑒價值,需要的朋友可以了解下。

首先看看兩種樹形菜單結構的代碼示例。

SingleTreeNode:

java" id="highlighter_117761">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 + ", children=" + children + "]";
    }
}

兩種轉換

ToMultiTreeTransformer:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.zzj.tree;
import java.util.ArrayList;
import java.util.List;
public class ToMultiTreeTransformer {
    private List<SingleTreeNode> singleTreeNodes;
    private List<MultiTreeNode> multiTreeNodes = new ArrayList<>();
    public ToMultiTreeTransformer(List<SingleTreeNode> singleTreeNodes) {
        this.singleTreeNodes = singleTreeNodes;
    }
    public List<MultiTreeNode> 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<MultiTreeNode> children = multiTreeNode.getChildren();
                if (children == null) {
                    children = new ArrayList<>();
                    multiTreeNode.setChildren(children);
                }
                children.add(child);
                setChildren(child);
            }
        }
    }
}

ToSingleTreeTransformer:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.zzj.tree;
import java.util.ArrayList;
import java.util.List;
public class ToSingleTreeTransformer {
    private List<MultiTreeNode> multiTreeNodes;
    private List<SingleTreeNode> singleTreeNodes = new ArrayList<>();
    public ToSingleTreeTransformer(List<MultiTreeNode> multiTreeNodes) {
        this.multiTreeNodes = multiTreeNodes;
    }
    public List<SingleTreeNode> 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<MultiTreeNode> 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);
                    }
                }
            }
        }
    }
}

測試

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.zzj.tree;
import java.util.ArrayList;
import java.util.List;
public class TreeTransformerTest {
    private final static List<SingleTreeNode> SINGLE_TREE = new ArrayList<SingleTreeNode>();
    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<MultiTreeNode> multiTreeNodes = multiTreeTransformer.transform();
        System.out.println(multiTreeNodes);
        ToSingleTreeTransformer singleTreeTransformer = new ToSingleTreeTransformer(multiTreeNodes);
        List<SingleTreeNode> singleTreeNodes = singleTreeTransformer.transform();
        System.out.println(singleTreeNodes);
    }
}

輸出結果:

?
1
2
[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編程兩種樹形菜單結構的轉換代碼的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出!

原文鏈接:http://blog.csdn.net/zhangzeyuaaa/article/details/54233609

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久看视频 | 成人爱爱电影 | 久久国产免费视频 | 国产在线欧美 | 最新中文字幕在线视频 | 国产在线看一区 | 男男啪羞羞视频网站 | 国产1区2区3区中文字幕 | 国产精品jk白丝蜜臀av软件 | 3xxx| 一级视频在线播放 | 天天操很很操 | 婷婷中文字幕一区二区三区 | 免费一级毛片在线播放视频 | 性大片性大片免费 | 香蕉国产在线视频 | 少妇的肉体的满足毛片 | 亚洲精品一区二区三区大胸 | 欧美中文字幕一区二区 | 成人啪啪色婷婷久 | 一级电影免费看 | 蜜桃网在线观看 | 亚洲精品久久久久久下一站 | 在线视频国产一区 | 91av资源在线 | 成人精品免费看 | 国产免费一区二区三区网站免费 | 九九热视频在线免费观看 | 成人辣文| 一级做受大片免费视频 | 国产91av视频 | 一区国产精品 | 成人福利免费在线观看 | 91免费官网| 久久精品免费网站 | 成人性生活视频在线观看 | 91看片王| 国产精品视频自拍 | 凹凸成人精品亚洲精品密奴 | 国产一区二区三区四 | 黄网站在线免费 |