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实现图书管理系统”中,我们可以利用`TreeSet`的特性来构建高效且功能完备的图书馆管理软件。下面将详细介绍如何利用`TreeSet`实现上述描述的功能。 1. **描述一个图书馆** 图书馆的基本信息...
在毕向东的Java基础视频教程中,讲解`TreeSet`练习的部分可能会涵盖以上这些知识点,并通过实际代码示例来加深理解和应用。例如,创建`TreeSet`,添加不同类型的数据,比较不同类型的排序,使用比较器,以及如何在...
5. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现。理解它们的区别和使用场景,能有效提高代码效率。 6. **IO流**:Java的...
计算机后端-Java-Java核心基础-第24章 集合01 25. TreeSet的自然排序.avi
计算机后端-Java-Java核心基础-第24章 集合01 26. TreeSet的定制排序.avi
计算机后端-Java-Java核心基础-第25章 集合02 05. TreeSet的课后练习.avi
【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言。Java的基础部分主要包括...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大的库支持而闻名。本教程将深入探讨Java的基础知识,旨在帮助初学者理解和掌握Java编程的核心概念。 1. **Java简介** Java是由Sun Microsystems...
了解数据类型(如整型、浮点型、字符型和布尔型)、变量声明、常量定义以及运算符的使用是学习Java语法的基础。 3. **控制流程**:Java提供了多种控制流程结构,如条件语句(if-else,switch-case)、循环(for,...
- 集合框架:List(ArrayList, LinkedList)、Set(HashSet, TreeSet)、Map(HashMap, TreeMap)的使用及它们之间的区别。 - 遍历集合:迭代器(Iterator)和增强型for循环(foreach)。 5. **Chapter 5:异常...
8. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现类,它们提供了存储和操作对象的容器。理解这些接口和类的特性和用途,可以...
本教程特点: 1.更适合零基础学员: ·自Java语言起源始,循序渐进...·Java语言基础阶段:12720行代码,Java语言高级阶段:11684行代码 ·课堂实战项目3套,课后实战项目2套 ·近百道企业面试真题精讲精练、极具实战性
13. **集合框架**:Java集合框架包括List, Set, Queue和Map接口,以及ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap等实现类。理解它们的区别和使用场景,能帮助你有效地管理数据。 14. **泛型**:...
集合框架是Java中处理数据集合的重要工具,包括List、Set和Queue接口,以及ArrayList、LinkedList、HashSet、TreeSet、ArrayDeque等实现类。学习它们的特点和使用场景,以及泛型的概念,可以有效地管理和操作数据。 ...
"java入门基础汇,总如何学习java" 这个标题暗示了我们要探讨的是初学者如何有效地掌握Java编程的基础知识。以下是关于Java面向对象、IO流、JDBC和Java集合框架的详细解释: 1. **Java面向对象**:面向对象是Java的...
8. **集合框架**:Java集合框架包括接口(如Iterable)和实现类(如ArrayList,Vector,LinkedList,HashSet,TreeSet等)。这些类提供了存储和操作对象的灵活方式。`HashMap`等类提供了基于键值对的数据存储,而`...
Java集合框架是管理对象集合的接口和类的集合,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。这些接口和类提供了丰富的功能,如添加、删除、查找元素,以及对集合...
9. **集合框架**:讲解Java集合框架,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、TreeMap)接口及其实现类的使用。 10. **多线程**:阐述并发编程的基础,如线程的创建、同步机制...
Java作为一门广泛使用的编程语言,其基础知识至关重要。"Java基础练习40题"是一个很好的资源,可以帮助初学者巩固和深化对Java的理解。这份练习涵盖了从基础语法到面向对象编程的各种概念,通过40个不同难度的题目,...
Java语言提供了集合框架,包括ArrayList类、LinkedList类、HashSet类和TreeSet类等。Java集合框架提供了多种数据结构,允许开发者存储和操作大量数据。 Java基础知识是Java开发人员必须掌握的基本技能。掌握Java...