java treeset 取前10,java提高篇----TreeSet

本文详细介绍了Java中的TreeSet,它是一个有序的Set集合,基于TreeMap实现。文章讲解了TreeSet的构造方法、常用操作如add、addAll、contains、remove等,并讨论了TreeSet如何利用NavigableMap接口提供的导航方法进行高效操作。此外,还阐述了TreeSet的内部实现,包括其依赖的TreeMap以及相关的方法实现。

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

一、TreeSet定义

我们知道TreeMap是一个有序的二叉树,那么同理TreeSet同样也是一个有序的,它的作用是提供有序的Set集合。通过源码我们知道TreeSet基础AbstractSet,实现NavigableSet、Cloneable、Serializable接口。其中AbstractSet提供 Set 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。NavigableSet是扩展的 SortedSet,具有了为给定搜索目标报告最接近匹配项的导航方法,这就意味着它支持一系列的导航方法。比如查找与指定目标最匹配项。Cloneable支持克隆,Serializable支持序列化。

public class TreeSet extends AbstractSet

implements NavigableSet, Cloneable, java.io.Serializable

同时在TreeSet中定义了如下几个变量。

private transient NavigableMap m;

//PRESENT会被当做Map的value与key构建成键值对

private static final Object PRESENT = new Object();

其构造方法:

//默认构造方法,根据其元素的自然顺序进行排序

public TreeSet() {

this(new TreeMap());

}

//构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。

public TreeSet(Comparator<? super E> comparator) {

this(new TreeMap<>(comparator));

}

//构造一个新的空 TreeSet,它根据指定比较器进行排序。

public TreeSet(Collection<? extends E> c) {

this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值