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;
}
}
}
分享到:
相关推荐
<br>第1章 Java基础 <br>1.1 转换基本数据类型 <br>1.2 Java的运算符 <br>1.3 控制程序的流程 <br>1.4 计算阶乘 <br>1.5 实现命令行程序 <br>第2章 Java面向对象程序设计 <br>2. 1 复数类 <br>2. 2 equals.chashCode...
排序: TreeSet支持两种排序方式: 自然排序:TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合... TreeSet<Object> set = new TreeSet<Object>(new MyTreeSetCompartor());
TreeSet<String>dictionary=new TreeSet<String>(); public void addWord(String s) { String word[] = s.split(" "); for(int i=0;i<word.length;i++) { dictionary.add(word[i]); } } %> <% String str = request...
TreeSet<T> ),您可以使用著名人物的示例来计算有关推文的统计信息。 这项任务的目的 首先,逐步将推文( String s)编入索引,以计算哪个单词出现的频率。 基于此统计信息,现在可以创建迭代器以便使用 整个词汇...
系统总结了 1.Date类 2.Calendar类 3.Math类与Biglnteger类 4.LinkedList<E>泛型类 5.HashSet<E>泛型类 ...7.TreeSet<E>泛型类 8.TreeMap<K,V>泛型类 9.Stack<E>泛型类 等方面的含义用法和范例。。。
interface Map<Key> TreeMap<K> HashMap<K> LinkedHashMap<K> Hashtable<K> extends Dictionary<K> - JDK 1.0 接口 Set TreeSet HashSet 树特里================== 问题: 如何使用两个堆栈实现队列? 答案:...
Comparator<String> com = new Comparator<String>(){ public int compare(String o1,String o2) { return o1.length()-o2.length(); } }; TreeSet ts = new TreeSet(com); ts.add("string"); ts.add(...
3.3 如何实现一个Set<Student> set = new TreeSet<>(); 12 3.4 如何实现一个Map<Object,List<Object>> map = new HashMap<>(); 13 4线程 14 两种方式的卖票线程 1) 继承 Thread 类,数据无法共享 14 2) 实现 ...
通过TreeSet类直接对学生成绩实现了排序功能,不必要进行相关额外的排序来实现!
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集合中添加类的对象,此类需实现Comparable接口,有实例,供需要的朋友下载学习。
JAVA集合框架之List、Map、Set之间的选择~小案例分析:http://blog.csdn.net/qq_23473123/article/details/51240739
文档摘录 文档摘录文档摘录文档摘录文档摘录文档摘录文档摘录
图书馆管理 1.描述一个图书馆 2.进书,借书卡办理 3.借书,还书 4.查询某书的借出记录 5.查询借书卡的借出记录 6.显示图书列表(按借出次数排序)
Java集合多线程安全 线程安全与不安全集合 线程不安全集合: ArrayList LinkedList HashMap HashSet TreeMap TreeSet StringBulider 线程安全集合: Vector ... List<String> list = ne
麻雀虽小,五脏俱全 展示了一个JDK的BUG,有兴趣的朋友,可以看下噢 我也不知道算不算BUG,解决起来很简单,但这样似乎违背了JDK的本意
Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...
毕向东Java基础视频教程-集合框架(TreeSet练习).
HashSet和TreeSet_围墙之外.rar
使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。 如果需要的话可以下载,有写成文章的。有写了一点中文...