`
yunchow
  • 浏览: 318194 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

TreeSet<T> 简单实现

阅读更多

package com.mypack.ds;

import java.util.Random;

public class TreeSet<T>
{
    
    /**
     * @param args
     */
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        TreeSet<Integer> tree = new TreeSet<Integer>();
        for (int i = 0; i < 20; i ++)
        {
            tree.add(new Random().nextInt(100));
        }
        System.out.println(tree);
    }
    
    private Entry<T> root;
    
    private volatile Entry<T> entry;
    
    public TreeSet()
    {
        
    }
    
    public void add(T node)
    {
        if (root == null)
        {
            entry = root;
            final Entry<T> tmp = entry;
            synchronized (TreeSet.class)
            {
                if (tmp == null)
                {
                    root = new Entry<T>(node);
                }
            }
        }
        else
        {
            insertNode(root, node);
        }
    }
    
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        
        travel(root, sb);
        
        return sb.toString();
    }
    
    void travel(Entry<T> root, StringBuilder sb)
    {
        if (root.left == null)
        {
            sb.append(root.value).append(",");
        }
        else
        {
            travel(root.left, sb);
        }
        sb.append(root.value).append(",");
        if (root.right == null)
        {
            sb.append(root.value).append(",");
        }
        else
        {
            travel(root.right, sb);
        }
    }
    
    synchronized void insertNode(Entry<T> obj, T node)
    {
        Comparable<T> c = (Comparable<T>)node;
        
        // right
        if (c.compareTo(obj.value) > 0)
        {
            if (obj.right != null)
            {
                insertNode(obj.right, node);
            }
            else
            {
                Entry<T> en = new Entry<T>(node);
                obj.right = en;
            }
        }
        // left
        else
        {
            if (obj.left == null)
            {
                Entry<T> en = new Entry<T>(node);
                obj.left = en;
            }
            else
            {
                insertNode(obj.left, node);
            }
        }
    }
    
    static class Entry<T>
    {
        Entry left;
        T value;
        Entry right;
        
        Entry(T value)
        {
            this.value = value;
        }
    }
    
}


0
0
分享到:
评论

相关推荐

    Java JDK实例宝典

    &lt;br&gt;第1章 Java基础 &lt;br&gt;1.1 转换基本数据类型 &lt;br&gt;1.2 Java的运算符 &lt;br&gt;1.3 控制程序的流程 &lt;br&gt;1.4 计算阶乘 &lt;br&gt;1.5 实现命令行程序 &lt;br&gt;第2章 Java面向对象程序设计 &lt;br&gt;2. 1 复数类 &lt;br&gt;2. 2 equals.chashCode...

    java排序代码

    排序: TreeSet支持两种排序方式: 自然排序:TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合... TreeSet&lt;Object&gt; set = new TreeSet&lt;Object&gt;(new MyTreeSetCompartor());

    jsp实验报告.doc

    TreeSet&lt;String&gt;dictionary=new TreeSet&lt;String&gt;(); public void addWord(String s) { String word[] = s.split(" "); for(int i=0;i&lt;word.length;i++) { dictionary.add(word[i]); } } %&gt; &lt;% String str = request...

    ist的matlab代码-uebung08:练习08

    TreeSet&lt;T&gt; ),您可以使用著名人物的示例来计算有关推文的统计信息。 这项任务的目的 首先,逐步将推文( String s)编入索引,以计算哪个单词出现的频率。 基于此统计信息,现在可以创建迭代器以便使用 整个词汇...

    java语言中使用的类总结

    系统总结了 1.Date类 2.Calendar类 3.Math类与Biglnteger类 4.LinkedList&lt;E&gt;泛型类 5.HashSet&lt;E&gt;泛型类 ...7.TreeSet&lt;E&gt;泛型类 8.TreeMap&lt;K,V&gt;泛型类 9.Stack&lt;E&gt;泛型类 等方面的含义用法和范例。。。

    DataStructureJava:主要数据结构——java中的简单实现

    interface Map&lt;Key&gt; TreeMap&lt;K&gt; HashMap&lt;K&gt; LinkedHashMap&lt;K&gt; Hashtable&lt;K&gt; extends Dictionary&lt;K&gt; - JDK 1.0 接口 Set TreeSet HashSet 树特里================== 问题: 如何使用两个堆栈实现队列? 答案:...

    TreeSet 不用自然排序自己做比较器

    Comparator&lt;String&gt; com = new Comparator&lt;String&gt;(){ public int compare(String o1,String o2) { return o1.length()-o2.length(); } }; TreeSet ts = new TreeSet(com); ts.add("string"); ts.add(...

    java编程宝典

    3.3 如何实现一个Set&lt;Student&gt; set = new TreeSet&lt;&gt;(); 12 3.4 如何实现一个Map&lt;Object,List&lt;Object&gt;&gt; map = new HashMap&lt;&gt;(); 13 4线程 14 两种方式的卖票线程 1) 继承 Thread 类,数据无法共享 14 2) 实现 ...

    学生成绩排序(TreeSet方式实现)

    通过TreeSet类直接对学生成绩实现了排序功能,不必要进行相关额外的排序来实现!

    set.list.map接口

    2. 两个实现类HashSet(LinkHashSet)和TreeSet,TreeSet有排序功能(Set set=new TreeSet();set.add(new Integer(8)); set.add(new Integer(4)); set.add(new Integer(7));)输出后的结果是:4 7 8 Eg: package test...

    TreeSet集合用法

    介绍TreeSet集合用法,向TreeSet集合中添加类的对象,此类需实现Comparable接口,有实例,供需要的朋友下载学习。

    treeset 和 hashlist 实现的扑克牌游戏

    JAVA集合框架之List、Map、Set之间的选择~小案例分析:http://blog.csdn.net/qq_23473123/article/details/51240739

    TreeSet 红黑树结构算法

    文档摘录 文档摘录文档摘录文档摘录文档摘录文档摘录文档摘录

    javaTreeSet实现图书管理系统

    图书馆管理 1.描述一个图书馆 2.进书,借书卡办理 3.借书,还书 4.查询某书的借出记录 5.查询借书卡的借出记录 6.显示图书列表(按借出次数排序)

    Java集合多线程安全.docx

    Java集合多线程安全 线程安全与不安全集合 线程不安全集合: ArrayList LinkedList HashMap HashSet TreeMap TreeSet StringBulider 线程安全集合: Vector ... List&lt;String&gt; list = ne

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    麻雀虽小,五脏俱全 展示了一个JDK的BUG,有兴趣的朋友,可以看下噢 我也不知道算不算BUG,解决起来很简单,但这样似乎违背了JDK的本意

    Java数据结构--13.Java8数据结构TreeSet.pdf

    Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...

    java 集合框架(TreeSet练习)

    毕向东Java基础视频教程-集合框架(TreeSet练习).

    HashSet和TreeSet_围墙之外

    HashSet和TreeSet_围墙之外.rar

    java泛型 用了treeset

    使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。 如果需要的话可以下载,有写成文章的。有写了一点中文...

Global site tag (gtag.js) - Google Analytics