96SEO 2026-02-20 10:23 8
文章目录往期文章一、介绍二、类的声明三、成员变量四、构造函数五、常用方法1.

在上期文章中我们从源码层面详细分析了java集合框架中Set一族的实现HashSet它的内部维护了一个HashMap对象作为内部存储也就是说HashSet的底层结构为哈希表今天我们介绍Set的另一个实现——TreeSet对标HashSet与HashMap的关系我们猜想TreeSet可能会维护一个TreeMap作为内部存储事实也确实如此因此TreeSet的特性均继承于TreeMap如元素有序等。
在学习TreeSet源码之前必须对TreeMap的源码了如指掌。
由于TreeMap底层实现为较复杂的红黑树对TreeMap源码不了解的同学请一定要参考前面的文章TreeMap源码。
下面我们先看一下TreeSet的UML图。
java.io.Serializable从类的声明和上面的UML类图中可以了解到
继承AbstractSet抽象类对其进行了扩展。
实现了NavigableSet接口表示它是一个提供导航功能的Set集合满足Set集合的定义实现了Cloneable接口提供了对象克隆方法但请注意是浅克隆。
实现了Serializable接口支持序列化。
HashSet的底层使用NavigableMap对象作为存储结构
而TreeMap已经实现了红黑树因此TreeSet无需再次对红黑树进行实现直接通过TreeMap对红黑树进行数据的存取即可。
因此TreeSet在保存数据时key为实际保存的数据使用一个固定的对象PRESENT作为假的value值
TreeSet提供了四个构造函数由于TreeSet的底层为TreeMap因此在TreeSet的构造方法中都是先实例化一个TreeMap对象。
}该构造函数的访问修饰符为默认因此只能被类内部和同包内的子类调用。
通过接收一个NavigableMap对象并将其作为内部的NavigableMap对象维护比如TreeMap。
通过TreeMap的无参构造实例化一个TreeMap对象作为TreeSet的内部成员变量。
comparator)来实例化一个TreeMap对象作为TreeSet的内部成员变量。
先通过无参构造实例化TreeSet对象然后将集合中的元素通过addAll()方法批量保存到TreeSet对象中。
其中addAll()方法的实现与TreeMap中putAll()方法的实现几乎完全相同故不再赘述可查看前面的文章TreeMap
在有序集合SortedSet中提供给我们一个方法comparator()来获取有序集合中的比较器再根据这个比较器来实例化一个TreeSet对象。
如果有序集合中不存在比较器Comparator则从TreeMap中我们也知道键值对中的key必须实现Compareable接口中的compareTo()方法。
其中addAll()方法的实现与TreeMap中putAll()方法的实现几乎完全相同故不再赘述可查看前面的文章TreeMap。
{this(s.comparator());addAll(s);
由于TreeSet实现NavigableSet接口NavigableSet接口又继承于SortedSet接口。
而TreeMap实现NavigableMap接口NavigableMap接口又继承于SortedMap接口如下图所示
SortedSet接口的方法都是通过调用TreeMap中实现SortedMap接口方法而实现的。
NavigableSet接口的方法都是通过调用TreeMap中实现NavigableMap接口方法而实现的。
获取比指定元素小的元素中最大的一个元素。
调用内部TreeMap对象实现NavigableMap接口的lowerKey()方法
获取小于等于指定元素的元素中最大的一个元素。
调用内部TreeMap对象实现NavigableMap接口的floorKey()方法
获取大于等于指定元素的元素中最小的一个元素。
调用内部TreeMap对象实现NavigableMap接口的ceilingKey()方法
获取比指定元素大的元素中最小的一个元素。
调用内部TreeMap对象实现NavigableMap接口的higherKey()方法
获取set集合中第一个元素并将其删除。
调用内部TreeMap对象实现NavigableMap接口的pollFirstEntry()方法获取首个键值对节点并删除后返回该键值对节点中的key。
获取set集合中最后一个元素并将其删除。
调用内部TreeMap对象实现NavigableMap接口的pollLastEntry()方法获取最后一个键值对节点并删除后返回该键值对节点中的key。
获取set集合中第一个元素。
调用内部TreeMap对象实现SortedMap接口的firstKey()方法获取首个键值对节点中的key。
获取set集合中最后一个元素。
调用内部TreeMap对象实现SortedMap接口的lastKey()方法获取最后一个键值对节点中的key。
元素有序基于比较器或Compareable接口的compareTo()方法实现元素的排序线程不安全TreeSet的底层实现为TreeMapTreeMap的底层实现为红黑树因此TreeSet的底层实现为红黑树TreeSet通过调用TreeMap的方法对红黑树进行操作。
————————————————我是万万岁我们下期再见————————————————
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback