TreeSet类的设计基于实现red-black树的TreeMap类。基本上,一个TreeSet对象是所有元素(节点)都有相同值(树中节点的value数据域)的TreeMap对象,TreeSet会忽略掉TreeMap集合中元素的value,只使用元素的key。下面是TreeSet类的字段:
private transient SortedMap m; // TreeSet基于SortedMap的实现
private transient Set keySet; // SortedMap实现的key视图,因为TreeSet只使用到map中元素的key域
// 向TreeSet集合中加入一个元素,实质上就是向它所基于的map中put一个元素,且这个元素的值(value)就是下面这哑元对象
private static final Object PRESENT = new Object();
我们看看它的默认构造函数:
public TreeSet() {//默认构造函数
this(new TreeMap());
}
从上面可以看出,TreeSet基于TreeMap来实现的,当然你可以使用一个实现了SortedMap接口的类
private TreeSet(SortedMap m) {
this.m = m;//基于SortedMap实现
keySet = m.keySet();//只使用map的key
}
再看看put方法:
public boolean add(Object o) {
/*
* PRESENT是前面提到过的哑元对象,用来代替map中元素的value,由此可看出
* 所有存入TreeSet中的元素最后实质上都由map存储起来,并且忽略所以元素的
* value(使用同一个Object对象顶替),所以对TreeSet的操作实质上就是对
* map的操作。
*/
return m.put(o, PRESENT)==null;
}
所以要搞清楚TreeSet还得要看懂TreeMap
才行~!
分享到:
相关推荐
在Java编程语言中,集合框架是处理数据的重要组成部分,其中`...同时,源码阅读也是提升技能的好方法,通过查看`HashSet`和`TreeSet`的源码,可以更深入地了解它们的工作原理,这有助于优化代码并解决可能出现的问题。
Java源代码是编程世界的基石,它是Java程序员用Java语言编写的程序文本,包含了...对于压缩包中的"java源码",可能是某个具体项目或库的源代码,通过阅读和学习,我们可以深入了解其设计思路和实现方式,提升编程技能。
通过阅读和实践这些源代码,你可以深入学习Java的各种特性,包括但不限于: 1. 类和对象:Java是面向对象的语言,源代码会展示如何定义类,创建对象,以及如何利用继承、封装和多态等面向对象原则来设计软件。 2. ...
这本书不仅提供了理论知识,还通过提供源代码实例,帮助读者更好地理解和应用这些概念。 首先,数据结构是存储和组织数据的方式,它是算法设计的基础。在书中,你将学习到基本的数据结构,如数组、链表、栈、队列、...
本压缩包包含了一系列关于Java基础语法的源代码示例,旨在帮助初学者深入理解和掌握Java编程的核心概念。以下将针对每个章节的可能内容进行详细阐述: 1. **Chapter 1:基础语法** - 变量声明与初始化:包括基本...
这份“Java数据结构与算法+源代码高清版”资源旨在帮助开发者深入理解并掌握这些关键概念。 首先,让我们来探讨数据结构。数据结构是组织和存储数据的方式,它为算法提供了基础。常见的数据结构包括数组、链表、栈...
从TreeSet的源代码可以看到,TreeSet使用了一个NavigableMap来保存Set集合的元素,其中NavigableMap是TreeMap的一个子接口。TreeSet的构造器可以指定一个NavigableMap对象来创建Set集合,也可以使用默认的TreeMap来...
扑克源代码 本资源为扑克24点游戏的JAVA源代码,游戏规则是将四张扑克牌随意组合使用四种算数方法(+、-、×、÷)来计算出结果为24的方案。源码使用了泛型、枚举,JDK版本为1.8。 知识点1:游戏规则简介 扑克24点...
·企业级笔试面试题目深入源码级讲解,拒绝死记硬背 4.代码量更大、案例更丰富、更贴近实战: ·Java语言基础阶段:12720行代码,Java语言高级阶段:11684行代码 ·课堂实战项目3套,课后实战项目2套 ·近百道企业...
通过阅读和分析这些源代码,你可以深入理解每种数据结构的工作原理,以及如何在Java中实现它们。同时,这也能帮助你掌握如何根据具体问题选择合适的数据结构,提升编程能力。在实际开发中,合理利用数据结构可以显著...
在编程领域,数据结构是构建高效算法的基础,它关乎如何有效地存储和组织数据。Java作为广泛应用的编程语言,提供了...通过阅读和理解源代码,你能够更好地理解Java集合框架的工作原理,并能灵活运用到自己的项目中去。
Java课程设计源代码是学习和理解Java编程语言深入精髓的重要资源。这些源代码实例涵盖了Java的基础到高级特性,为初学者提供了丰富的实践素材,同时也为有一定经验的开发者提供了参考和灵感。下面将详细阐述Java课程...
"Java核心技术源代码.rar"这个压缩包很可能是包含了一些关于Java基础到高级技术的示例代码或者一个完整的项目源码,用于帮助学习者深入理解Java编程。在这个压缩包中,"CoreJava源代码"可能包含了Java核心类库的实现...
Java 类的源代码文件是程序员编写程序的基本单元,它们以.java为扩展名,包含了Java语言的语法结构,用于定义对象、方法和变量等。在这个压缩包中,我们可能找到了作者自己编写的关于Java集合类的实例源代码。Java...
在这个"数据结构(Java版) 源代码"的压缩包中,我们可以找到用Java编写的典型数据结构的实现,这对我们学习和理解数据结构具有极大的价值。 首先,我们要明白数据结构的基本类型,包括线性结构(如数组、链表)、树...
标题 "读取excel和连接数据库的jar包以及工程源代码" 涉及到的核心知识点主要是Java编程中处理Excel文件和数据库操作的部分。在描述中提到的“源码”表明这是一个实际可运行的项目,包含了读取Excel数据并利用JDBC...
Java编程新手自学手册源代码是为初学者设计的一份宝贵资源,它涵盖了Java语言的基础到进阶知识,帮助读者通过实践来理解编程概念。这份源代码包含了一系列的示例程序和练习,旨在辅助读者深入学习Java编程语言。 一...
Java基础教程源代码是学习Java编程语言的重要参考资料,它涵盖了Java的基本操作,旨在帮助初学者理解和掌握编程概念。在这个教程中,你可以通过实际的代码示例来了解和实践各种Java编程技术。以下是一些关键的知识点...
源代码的重要性在于它是软件开发的基础,通过阅读和理解源代码,我们可以了解到程序的工作原理、设计模式以及算法实现。对于学习Java的人来说,分析和研究源代码是提升技能的有效途径。 在Java编程中,主要涉及以下...
《Core Java 2》是Java开发领域的一本经典著作,分为卷一《基础知识》和卷二《高级特性》,深入浅出地介绍了Java编程的核心概念和技术。...同时,书中丰富的示例代码和源代码分析有助于加深理解,提升实战能力。