重点描述TreeSet的两种排序方式

本文详细介绍了Java中TreeSet的排序原理和实现方式,包括基于Comparable接口的自然排序和通过Comparator接口的比较器排序。内容涵盖自然排序的实现,对Integer和String对象的默认排序,以及自定义对象的自然排序。同时,文章讲解了比较器排序的实现步骤,包括一般比较器和匿名内部类的常见写法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.背景介绍

2.TreeSet保证元素唯一和排序的原理

3.两种排序(自然排序,比较器排序)

4.自然排序的实现

4.1 Integer和String对象都可以进行默认的TreeSet排序

4.2 对自定义对象进行 自然排序

5.比较器排序的实现

5.1 一般比较器写法

5.2 常见比较器写法


1.背景介绍

  1. TreeSet底层数据结构采用红黑树(平衡二叉树)来实现,元素唯一且已经排好序;唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。根据构造方法不同,分为自然排序(无参构造)和比较器排序(有参构造)。
  2. public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable
    
  3. 基于 TreeMapNavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
  4. 此实现为基本操作(addremovecontains)提供受保证的 log(n) 时间开销。

2.TreeSet保证元素唯一和排序的原理

TreeSet集合底层数据结构是红黑树(平衡二叉树)。 第一个元素存储的时候,直接作为根节点。 从第二个开始,每个元素从根节点开始比较: 

大——就作为右孩子 (保证有序)

小——就作为左孩子 (保证有序)

相等——不做处理(保证唯一性)

 

3.两种排序(自然排序,比较器排序)

  • 自然排序:让元素所属的类中实现自然排序接口Comparerable接口 。可以在自定义类中实现Comparerable接口,重写compareTo()方法。 
  • 比较器排序:让集合的构造方法接收一个比较器Comparator接口的子类对象。可以在自定义类中实现Comparetor接口,重写compare()方法。

4.自然排序的实现

4.1 Integer和String对象都可以进行默认的TreeSet排序

public class TEST {
    public static void main(String[] args) {
        //Integer类本身已经实现了Co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值