`

java TreeSet 的基础使用

    博客分类:
  • java
阅读更多
TreeSet是依靠TreeMap来实现的
TreeSet是一个有序集合,她的元素 按照升序排列,默认是按照自然顺序排列,也就是说TreeSet中的对象元素需要实现Comparable接口。
TreeSet类中跟HashSet类一样也没有get()方法来获取列表中的元素,所以也只能通过迭代器方法来获取。

Java代码 
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对象时传递一个比较器来实现你自己的排序方式:
Java代码 
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()); 
           } 
      } 



Student类:
Java代码 
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; 
           } 
      } 



上面如果只使用学号排序,那么学号相同的就不会被打印的。
分享到:
评论

相关推荐

    javaTreeSet实现图书管理系统

    在这个“javaTreeSet实现图书管理系统”中,我们可以利用`TreeSet`的特性来构建高效且功能完备的图书馆管理软件。下面将详细介绍如何利用`TreeSet`实现上述描述的功能。 1. **描述一个图书馆** 图书馆的基本信息...

    java 集合框架(TreeSet练习)

    在毕向东的Java基础视频教程中,讲解`TreeSet`练习的部分可能会涵盖以上这些知识点,并通过实际代码示例来加深理解和应用。例如,创建`TreeSet`,添加不同类型的数据,比较不同类型的排序,使用比较器,以及如何在...

    java经典基础试题

    5. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现。理解它们的区别和使用场景,能有效提高代码效率。 6. **IO流**:Java的...

    Java基础尚硅谷宋红康学习笔记

    【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言。Java的基础部分主要包括...

    计算机后端-Java-Java核心基础-第24章 集合01 26. TreeSet的定制排序.avi

    计算机后端-Java-Java核心基础-第24章 集合01 26. TreeSet的定制排序.avi

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

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

    计算机后端-Java-Java核心基础-第25章 集合02 05. TreeSet的课后练习.avi

    计算机后端-Java-Java核心基础-第25章 集合02 05. TreeSet的课后练习.avi

    java课件 java基础教程

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大的库支持而闻名。本教程将深入探讨Java的基础知识,旨在帮助初学者理解和掌握Java编程的核心概念。 1. **Java简介** Java是由Sun Microsystems...

    Java基础Java基础Java基础Java基础.zip

    了解数据类型(如整型、浮点型、字符型和布尔型)、变量声明、常量定义以及运算符的使用是学习Java语法的基础。 3. **控制流程**:Java提供了多种控制流程结构,如条件语句(if-else,switch-case)、循环(for,...

    java基础语法程序源代码

    - 集合框架:List(ArrayList, LinkedList)、Set(HashSet, TreeSet)、Map(HashMap, TreeMap)的使用及它们之间的区别。 - 遍历集合:迭代器(Iterator)和增强型for循环(foreach)。 5. **Chapter 5:异常...

    java学习基础入门

    8. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现类,它们提供了存储和操作对象的容器。理解这些接口和类的特性和用途,可以...

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

    本教程特点: 1.更适合零基础学员: ·自Java语言起源始,循序渐进...·Java语言基础阶段:12720行代码,Java语言高级阶段:11684行代码 ·课堂实战项目3套,课后实战项目2套 ·近百道企业面试真题精讲精练、极具实战性

    java基础java基础学习java基础学习

    13. **集合框架**:Java集合框架包括List, Set, Queue和Map接口,以及ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap等实现类。理解它们的区别和使用场景,能帮助你有效地管理数据。 14. **泛型**:...

    达内java基础pdf

    集合框架是Java中处理数据集合的重要工具,包括List、Set和Queue接口,以及ArrayList、LinkedList、HashSet、TreeSet、ArrayDeque等实现类。学习它们的特点和使用场景,以及泛型的概念,可以有效地管理和操作数据。 ...

    java入门基础汇,总如何学习java

    "java入门基础汇,总如何学习java" 这个标题暗示了我们要探讨的是初学者如何有效地掌握Java编程的基础知识。以下是关于Java面向对象、IO流、JDBC和Java集合框架的详细解释: 1. **Java面向对象**:面向对象是Java的...

    Java 基础核心总结.pdf

    8. **集合框架**:Java集合框架包括接口(如Iterable)和实现类(如ArrayList,Vector,LinkedList,HashSet,TreeSet等)。这些类提供了存储和操作对象的灵活方式。`HashMap`等类提供了基于键值对的数据存储,而`...

    Java基础学习资料

    Java集合框架是管理对象集合的接口和类的集合,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。这些接口和类提供了丰富的功能,如添加、删除、查找元素,以及对集合...

    java程序基础教程ppt

    9. **集合框架**:讲解Java集合框架,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、TreeMap)接口及其实现类的使用。 10. **多线程**:阐述并发编程的基础,如线程的创建、同步机制...

    Java基础练习40题

    Java作为一门广泛使用的编程语言,其基础知识至关重要。"Java基础练习40题"是一个很好的资源,可以帮助初学者巩固和深化对Java的理解。这份练习涵盖了从基础语法到面向对象编程的各种概念,通过40个不同难度的题目,...

    01-Java基础知识面试题(2023最新版).pdf

    Java语言提供了集合框架,包括ArrayList类、LinkedList类、HashSet类和TreeSet类等。Java集合框架提供了多种数据结构,允许开发者存储和操作大量数据。 Java基础知识是Java开发人员必须掌握的基本技能。掌握Java...

Global site tag (gtag.js) - Google Analytics