java中的tree是什么意思

Python013

java中的tree是什么意思,第1张

tree 英 [tri:]   美 [tri]  :n. 树木料树状图宗谱;vt. 把?赶上树使处于困境把鞋型插入(鞋内)

短语

family tree 家族树 家谱 家庭树 族谱

Suffix Tree [计] 后缀树 后缀树实现 字尾树

tree hyrax 树蹄兔属 树蹄兔

Leftist tree 左偏树 左倾树

Tree sitting 树坐 国际常见的树坐

Tree spiking 树钉

Metric tree 度量树

Fenwick tree 树状数组

camphor tree [林] 樟树 [林] 樟脑树 香樟树 香樟

扩展资料

双语例句

1、You are absolutely correct. The leaves are from a bay tree

你说得很对,这是月桂树的叶子。

2、The peach tree is wormy.

桃树长虫了。

3、He dug a hole in our yard on Edgerton Avenue to plant a maple tree when I was born.

我出生的时候,他在埃杰顿大街我们家的园圃里挖了个坑,种了棵枫树。

4、China has the world's most ancient tree species--metasequoia.

中国有世界最古老的树种--水杉。

5、A vandal with a chainsaw cut down a tree.

一个故意破坏公物的人用链锯伐倒了一棵树。

节点类:

package cn.com.tree  

  

public class Node {  

    private Integer id  

    private Integer parentId  

    private String name  

    private String link  

      

    public Integer getId() {  

        return id  

    }  

    public void setId(Integer id) {  

        this.id = id  

    }  

    public Integer getParentId() {  

        return parentId  

    }  

    public void setParentId(Integer parentId) {  

        this.parentId = parentId  

    }  

    public String getName() {  

        return name  

    }  

    public void setName(String name) {  

        this.name = name  

    }  

    public String getLink() {  

        return link  

    }  

    public void setLink(String link) {  

        this.link = link  

    }  

}

输出树形菜单类:

package cn.com.tree  

  

import java.util.ArrayList  

import java.util.List  

  

public class Tree {  

    private StringBuffer html = new StringBuffer()  

    private List<Node> nodes  

      

    public Tree(List<Node> nodes){  

        this.nodes = nodes  

    }  

      

    public String buildTree(){  

        html.append("<ul>")  

        for (Node node : nodes) {  

            Integer id = node.getId()  

            if (node.getParentId() == null) {  

                html.append("\r\n<li id='" + id + "'>" + node.getName()+ "</li>")  

                build(node)  

            }  

        }  

        html.append("\r\n</ul>")  

        return html.toString()  

    }  

      

    private void build(Node node){  

        List<Node> children = getChildren(node)  

        if (!children.isEmpty()) {  

            html.append("\r\n<ul>")  

            for (Node child : children) {  

                Integer id = child.getId()  

                html.append("\r\n<li id='" + id + "'>" + child.getName()+ "</li>")  

                build(child)  

            }  

            html.append("\r\n</ul>")  

        }   

    }  

      

    private List<Node> getChildren(Node node){  

        List<Node> children = new ArrayList<Node>()  

        Integer id = node.getId()  

        for (Node child : nodes) {  

            if (id.equals(child.getParentId())) {  

                children.add(child)  

            }  

        }  

        return children  

    }  

}

测试类:

package zzj.test  

  

import java.util.ArrayList  

import java.util.List  

  

import cn.com.tree.Node  

import cn.com.tree.Tree  

  

  

public class Test {  

  

    /** 

     * @param args 

     */  

    public static void main(String[] args) {  

        List<Node> nodes = new ArrayList<Node>()  

          

        Node node1 = new Node()  

        node1.setId(1)  

        node1.setName("node1")  

        node1.setParentId(null)  

        node1.setLink(null)  

        nodes.add(node1)  

          

        Node node11 = new Node()  

        node11.setId(11)  

        node11.setName("node11")  

        node11.setParentId(1)  

        node11.setLink(null)  

        nodes.add(node11)  

          

        Node node111 = new Node()  

        node111.setId(111)  

        node111.setName("node111")  

        node111.setParentId(11)  

        node111.setLink(null)  

        nodes.add(node111)  

          

        Node node12 = new Node()  

        node12.setId(12)  

        node12.setName("node12")  

        node12.setParentId(1)  

        node12.setLink(null)  

        nodes.add(node12)  

          

        Node node2 = new Node()  

        node2.setId(2)  

        node2.setName("node2")  

        node2.setParentId(null)  

        node2.setLink(null)  

        nodes.add(node2)  

          

        Node node21 = new Node()  

        node21.setId(21)  

        node21.setName("node21")  

        node21.setParentId(2)  

        node21.setLink(null)  

        nodes.add(node21)  

          

        Node node3 = new Node()  

        node3.setId(3)  

        node3.setName("node3")  

        node3.setParentId(null)  

        node3.setLink(null)  

        nodes.add(node3)  

          

        Tree tree = new Tree(nodes)  

        System.out.println(tree.buildTree())  

    }  

}

JTree组件被用来以树的形式显示数据,一层套一层,看起来清晰明了,使用户很方便地就了解到各个节点之间的层次关系,可以很容易地找到相关的数据。

例如 Windows 系统的文件管理器,它就是一个典型的树层次结构。

JTree的构造函数:

·JTree() 建立一棵默认的树。

·JTree(Hashtable data) 利用Hashtable建立树。

·JTree(Object[] data) 利用数组建立树。

·JTree(TreeModel model) 利用TreeModel建立树。

·JTree(TreeNode root) 建立以root为根的树。

·JTree(TreeNode root,Boolean children) 建立以 root 为根的树,并设定是否允许有子节点。

·JTree(Vector value) 利用Vector建立树。

使用一个JTree可以简单地像下面这样表示:

import javax.swing.JFrame

import javax.swing.JTree

import javax.swing.event.TreeSelectionEvent

import javax.swing.event.TreeSelectionListener

import javax.swing.tree.DefaultMutableTreeNode

 

public class TreeDemo {

    public static void main(String[] args) {

 

        // 创建没有父节点和子节点、但允许有子节点的树节点,并使用指定的用户对象对它进行初始化。

        // public DefaultMutableTreeNode(Object userObject)

        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("软件部")

        node1.add(new DefaultMutableTreeNode(new User("小花")))

        node1.add(new DefaultMutableTreeNode(new User("小虎")))

        node1.add(new DefaultMutableTreeNode(new User("小龙")))

 

        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("销售部")

        node2.add(new DefaultMutableTreeNode(new User("小叶")))

        node2.add(new DefaultMutableTreeNode(new User("小雯")))

        node2.add(new DefaultMutableTreeNode(new User("小夏")))

 

        DefaultMutableTreeNode top = new DefaultMutableTreeNode("职员管理")

 

        top.add(new DefaultMutableTreeNode(new User("总经理")))

        top.add(node1)

        top.add(node2)

        final JTree tree = new JTree(top)

        JFrame f = new JFrame("JTreeDemo")

        f.add(tree)

        f.setSize(300, 300)

        f.setVisible(true)

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

        // 添加选择事件

        tree.addTreeSelectionListener(new TreeSelectionListener() {

 

            @Override

            public void valueChanged(TreeSelectionEvent e) {

                DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree

                        .getLastSelectedPathComponent()

 

                if (node == null)

                    return

 

                Object object = node.getUserObject()

                if (node.isLeaf()) {

                    User user = (User) object

                    System.out.println("你选择了:" + user.toString())

                }

 

            }

        })

    }

}

 

class User {

    private String name

 

    public User(String n) {

        name = n

    }

 

    // 重点在toString,节点的显示文本就是toString

    public String toString() {

        return name

    }

}