`
sisi1984117
  • 浏览: 152225 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA TreeSet的使用

阅读更多

TreeSet是依靠TreeMap来实现的
TreeSet是一个有序集合,她的元素 按照升序排列,默认是按照自然顺序排列,也就是说TreeSet中的对象元素需要实现Comparable接口。
TreeSet类中跟HashSet类一样也没有get()方法来获取列表中的元素,所以也只能通过迭代器方法来获取。
import java.util.*;
public class TreeSetTest
{
      public static void main(String[] args)
      {
           TreeSet tr =new TreeSet();
           tr.add("zhangshan");
           tr.add("wangwu");
           tr.add("lisi");
           Iterator it =tr.iterator();
           while(it.hasNext())
           {
                 System.out.println(it.next());
           }
      }
}
上面打印结果为:lisi wangwu zhangshan 这时因为TreeSet是一个有序并且默认按自然顺序排列,而不像哈希表那样毫无规律。
上面向TreeSet中添加的对象好像没有实现Comparable接口哦??那是因为添加的是String对象,而String类已经实现了Comparable接口。
      当然,你也可以在创建TreeSet对象时传递一个比较器来实现你自己的排序方式:
import java.util.*;
public class TreeSetTest
{
      public static void main(String[] args)
      {
           //传递一个比较器来实现你自己的排序方式
           TreeSet tr =new TreeSet(new Student.StudentComparator());
           tr.add(new Student(3,"wnagwu"));
           tr.add(new Student(2,"zhangshan"));
           tr.add(new Student(2,"lisi"));
           tr.add(new Student(1,"xiejin"));
           Iterator it =tr.iterator();
           while(it.hasNext())
           {
                 System.out.println(it.next());
           }
      }
}
class Student implements Comparable,Comparator
{
      int num;
      String name;
      Student(int num,String name)
      {
           this.num=num;
           this.name=name;
      }
      public int compareTo(Object o)
      {
           Student st =(Student)o;
           int result;
           result= num>st.num?1:(num==st.num?0:-1);
           //如果学号相等,就按姓名排列
           /*if(result==0)
           {
                 return name.compareTo(st.name);
           }*/
           return result;
      }
      //实现Comparator接口并实现它的抽象方法
      public int compare(Object o1,Object o2)
      {
           Student st1 =(Student)o1;
           Student st2 =(Student)o2;
           return st1.name.compareTo(st2.name);
     
      }
      //重写toString()方法,因为如果不重写,打印出来的是16进制代码
      public String toString()
      {
           return "num="+num+"; name="+name;
      }
      public static class StudentComparator implements Comparator
      {
           public int compare(Object o1,Object o2)
           {
                 Student st1 =(Student)o1;
                 Student st2 =(Student)o2;
                 int result;
                 result=st1.num>st2.num?1:(st1.num==st2.num?0:-1);
                 if(result==0)//如果学号相等 就进行名字排序
                 {
                      result=st1.name.compareTo(st2.name);
                 }
                 return result;
           }
      }
}
上面如果只使用学号排序,那么学号相同的就不会被打印的。
问题 :如果不用内部类实现比较器,该怎么做???
HashSet与TreeSet的区别:
HashSet是基于hash算法实现的,性能优于TreeSet。通常使用HashSet,在我们需要对其中元素排序的时候才使用TreeSet。

来源:http://blog.csdn.net/wzwjr/archive/2008/12/27/3618195.aspx

分享到:
评论

相关推荐

    用java的TreeSet写的一个求并集算法

    用JAVA集合TreeSet写的求并集算法

    Java SE程序 TreeSet类中自定义CompareTo类

    Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类...

    javaTreeSet实现图书管理系统

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

    java集合-TreeSet的使用

    TreeSet 是 Java 中的一个集合类,它实现了 SortedSet 接口,并且使用红黑树作为底层数据结构。TreeSet 具有以下主要特点: 排序性:TreeSet 中的元素是有序的,默认按照元素的自然顺序进行排序。或者,可以在创建 ...

    Java TreeSet类的简单理解和使用

    主要介绍了Java TreeSet类的简单理解和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

    java泛型 用了treeset

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

    JavaTreeSet实现摊位销售管理系统

    * 摊位销售管理 1.有一个水果销售摊位,销售3种水果,重量和单价各不相同,实现多次的销售业务 2.销售时如果为顾客为女性销售金额打8折 3.显示当前各种水果的库存数 4.查询全部销售记录信息 5.加入其它水果品种 ...

    JavaTreeSet停车场管理系统

    停车场管理 1.一个停车场,内有多个车位,可停入各种车辆 2.只有具备车牌并高度低于3米的车辆可停入 3.停入时开始计费,按每小时2元 4.查询全部停车位的状态 5.按车牌及停车位号取车,取车时收停车费 ...

    java 集合框架(TreeSet练习)

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

    尚硅谷-实验:TreeSet的自然排序与定制排序.pdf

    ·课程共30天,715个知识视频小节,涉及主流Java使用的方方面面,全而不冗余 ·全程内容涵盖数据结构、设计模式、JVM内存结构等深度技术 ·企业级笔试面试题目深入源码级讲解,拒绝死记硬背 4.代码量更大、案例更...

    Java TreeSet实现学生按年龄大小和姓名排序的方法示例

    主要介绍了Java TreeSet实现学生按年龄大小和姓名排序的方法,涉及java类型转换、遍历、比较等相关操作技巧,需要的朋友可以参考下

    Class003_TreeSet.java

    Class003_TreeSet.java

    java中treemap和treeset实现红黑树

    主要为大家详细介绍了java中treemap和treeset实现红黑树,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java + 集合 + TreeSet +定制排序

    Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师。 从互联网到企业平台,Java是应用最广泛的编程语言. Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行; Java程序易于编写,而且有...

    java集合使用实例

    本资源包含java集合(hashset treeset hashmap和treemap)的使用实例

    treeset 和 hashlist 实现的扑克牌游戏

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

    浅谈TreeSet中的两种排序方式

    下面小编就为大家带来一篇浅谈TreeSet中的两种排序方式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    TreeSet详解和使用示例_动力节点Java学院整理

    TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。这篇文章主要介绍了TreeSet使用示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    计算机后端-Java-Java核心基础-第24章 集合01 25. TreeSet的自然排序.avi

    计算机后端-Java-Java核心基础-第24章 集合01 25. TreeSet的自然排序.avi

Global site tag (gtag.js) - Google Analytics