美文网首页
Java 中的Set集合

Java 中的Set集合

作者: 被虐的小鸡 | 来源:发表于2020-04-08 20:57 被阅读0次

如有转载请注明出处 https://www.jianshu.com/p/077cf3957a3a

绪论

set的集合有HashSet和TreeSet两种,他们都是线程不安全的,并且可以实现数据不重复。HashSet的内部原理是HashMap实现的,TreeSet是TreeMap实现的

TreeMap

treeMap也比较简单,里面实现了比较器,根据大小来去放置数据。如果没有数据那么就把第一条数据设置为树的根节点,如果其他数据小于根节点,就把它放在树的左节点,如果其他数据大于根节点,就把它放在树的右节点。

写代码实现一个树

package a.f;

public class Tree {
    //先序
    public void PFTree(TreeNode root){
        if (root==null){
            return;
        }
        System.out.print(root.obj+"...");
        PFTree(root.left);
        PFTree(root.right);
    }

    //中序
    public void PZTree(TreeNode root){
        if (root==null){
            return;
        }
        PZTree(root.left);
        System.out.print(root.obj+"...");
        PZTree(root.right);
    }

    //后序
    public void PBTree(TreeNode root){
        if (root==null){
            return;
        }
        PBTree(root.left);
        PBTree(root.right);
        System.out.print(root.obj+"...");
    }

    public TreeNode build(int[] a){
        TreeNode root = new TreeNode(a[0]);
        for (int i = 1; i < a.length; i++) {
            TreeNode treeNode = new TreeNode(a[i]);
            sort(root,treeNode);
        }

        return root;
    }

    private void sort(TreeNode root, TreeNode treeNode) {
        if (root.obj>=treeNode.obj){
            if (root.left!=null){
                sort(root.left,treeNode);
            }else{
                treeNode.parent=root;
                root.left=treeNode;
            }
        }else{
            if (root.right!=null){
                sort(root.right,treeNode);
            }else{
                treeNode.parent=root;
                root.right=treeNode;
            }
        }
    }

    public static void main(String[] args) {
        int[] a={100,35,3,44,212,453};
        Tree tree = new Tree();
        TreeNode root = tree.build(a);
        System.out.println("先序");
        tree.PFTree(root);
        System.out.println();
        System.out.println("中序");
        tree.PZTree(root);
        System.out.println();
        System.out.println("后序");
        tree.PBTree(root);
    }
}
package a.f;

public class TreeNode {
    public TreeNode parent;
    public TreeNode left;
    public TreeNode right;
    public Integer obj;
    public TreeNode(Integer obj){
        this.obj=obj;
    }
}

相关文章

网友评论

      本文标题:Java 中的Set集合

      本文链接:https://www.haomeiwen.com/subject/lopxmhtx.html