TreeSet是实现Set接口的实现类。所以它存储的值是唯一的,同时也可以对存储的值进行排序,排序用的是二叉树原理。所以要理解这个类,必须先简单理解一下什么是二叉树。...TreeSet的基本使用 @Test public void test() { Set set = new TreeSet();...如果TreeSet里面存储的是对象呢?会出现什么情况呢?...TreeSet有这么一个构造方法: TreeSet(Comparator comparator) 构造一个新的,空的树集,根据指定的比较器进行排序。 ...()方法返回的结果进行存储 (2)比较器顺序(Comparator) 创建TreeSet的时候可以指定一个Comparator 如果传入了Comparator的子类对象,那么TreeSet就会按照比较器中的顺序排序
参考链接: Java TreeSet TreeSet() 构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。 ...TreeSet(Collection extendsE> c) 构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。 ...TreeSet(Comparator superE> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。 ...TreeSet(SortedSet s) 构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。 ...TreeSet publicTreeSet(Comparator superE> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。
TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性...对象的add()方法,参数:Student对象 遍历集合 import java.util.TreeSet; public class TreeSetDemo { /** *...@param args */ public static void main(String[] args) { TreeSet treeset=new...TreeSet(); treeset.add(new Student("taoshihan1",30)); treeset.add(new Student...("taoshihan2",20)); treeset.add(new Student("taoshihan3",40)); for(Student student:treeset
在这一篇中我们主要分享一下TreeSet集合的相关知识。在上一篇中我们介绍了HashSet集合的底层实现,并且发现HashSet底层是通过HashMap集合实现的。...那么顾名思义今天我们介绍的TreeSet集合,底层就是通过TreeMap集合实现的。那么废话不多说,我们直接看TreeSet的初始化代码。 初始化 ?...下面我们看一下TreeSet集合中的add方法的底层实现。 ? HashSet中的add方法的实现逻辑基本和HashSet中的实现逻辑一样。都是直接调用了底层Map的实现类。...既然TreeSet底层是通过TreeMap实现的,那么我们很容易可以总结出TreeSet具有以下的特性: 总结 保存在TreeSet集合中的元素,必须保证能够排序 TreeSet集合中不能保存null...元素,否则,虚拟机会抛出异常 TreeSet集合是有序的集合类,但是,不能保证元素的添加顺序与遍历顺序一致 TreeSet集合不是线程安全的集合类,在多线程环境使用时,要添加额外的同步代码,已保证线程安全
——东野圭吾《白夜行》 0 前言 上篇我们分析了HashSet,它是组合了 HashMap 实现的,那TreeSet会是怎么实现的呢?没错!...和HashSet的实现一样,也是利用了Map保存的Key-Value键值对的Key不会重复的特点.诸多类似 add 这种方法实现比较简单,所以 TreeSet 自己简单组合实现下即可....借由不重复 key 特点,我们还可以用其对 key 进行去重,TreeSet 底层使用的是 TreeMap,TreeMap 在 put 的时候,如果发现 key 是相同的,会把 value 值进行覆盖,...所有不会产生重复的 key ,利用这一特性,使用 TreeSet 正好可以去重. 5 ceiling TreeSet中实现NavigableSet接口 [5088755_1583917527579_8BAB0869A6DD644D037E218F9EC51E46...基于TreeMap实现的,支持自然排序和自定义排序 不允许null值; 非线程安全,并发场景下可以使用Collections.synchronizedSortedSet(new TreeSet(...)
TreeSet是一个有序的集合,它支持自然排序和根据实现Comparator或Comparable接口进行排序。...下面我们通过案例来看一下TreeSet的使用. 1、使用TreeSet)对String类型的数据进行存储,存储顺序默认按字母升序排序。...运行效果 2、使用TreeSet对Intege类型数据进行存储,存储l顺序默认按数字从小到大排序。...在本例题中,定义TreeSet对象,并向集合中添加整型数据,然后输出集合对象,也就是将数据放到中输出,这是集合的默认输出格式。...小伙伴可以参考floor()方法进行练习呦~ 3、当TreeSet中添加自定义类的对象时,是如何进行排序的呢?
之前我们看了HashMap和TreeMap,今天我们看看他们的小弟:HashSet和TreeMap
与HashSet不同,TreeSet中的元素是按照其自然顺序排序的,或者根据构造函数中提供的Comparator排序。...使用方法构造函数TreeSet提供了以下两个构造函数:TreeSet():创建一个默认的空TreeSet,其中的元素将按照自然顺序进行排序。TreeSet(Comparator set = new TreeSet();set.add("apple");set.add("banana");set.add("...其中:first()方法返回TreeSet中的第一个(最小的)元素。last()方法返回TreeSet中的最后一个(最大的)元素。...下面是一个示例:TreeSet set = new TreeSet();set.add(1);set.add(3);set.add(5);set.add(7);set.add(9)
Math.abs(diff); return 0; } } 注意:如果加入null会有nullpointException空指针异常 因为每加入一个对象自动调用compareTo方法,使用TreeSet...不能加入空指针 import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet...person2 = new Person(2, 10, "阿财"); Person person3 = new Person(3, 27, "小刘"); Set aSet = new TreeSet
0 前言 上篇我们分析了HashSet,它是组合了 HashMap 实现的,那TreeSet会是怎么实现的呢?没错!组合 TreeMap 实现. 1 继承体系 ?...3.2 有参 构造一个包含指定集合中元素的新TreeSet,并根据其元素的自然顺序对其进行排序。 插入集合中的所有元素必须实现Comparable接口。...构造一个新的TreeSet,其中包含与指定的sorted set相同的元素,并使用相同的顺序 ? 构造一个新的空树集,根据指定的比较器排序。...和HashSet的实现一样,也是利用了Map保存的Key-Value键值对的Key不会重复的特点.诸多类似 add 这种方法实现比较简单,所以 TreeSet 自己简单组合实现下即可....所有不会产生重复的 key ,利用这一特性,使用 TreeSet 正好可以去重. 5 ceiling TreeSet中实现NavigableSet接口 ?
HashSet和TreeSet都是Java中常见的集合框架,它们都实现了Set接口,并提供了存储无序、不可重复元素的功能。但是它们的实现方式、性能和适用场景有所不同。...TreeSet可以保证元素的唯一性,并且可以按照自然顺序或自定义比较器的方式对元素进行排序。TreeSet的添加、删除、查找操作的时间复杂度都是O(log n)。...TreeSet的缺点:不能存储null值;迭代TreeSet的顺序是按照元素的顺序输出的;比HashSet的性能差一些,因为需要维护红黑树的平衡;自定义比较器时需要额外的开销。...TreeSet set = new TreeSet(); // 添加元素 set.add(5); set.add(3); set.add(8);...根据具体的需求,我们可以选择使用HashSet或TreeSet。
1、概述:TreeSet可以对Set集合中的元素进行排序。... */ 2.TreeSet是依靠TreeMap来实现的。...TreeSet是一个有序集合,TreeSet中的元素将按照升序排列(指排序的顺序),缺省是按照自然排序进行排列,意味着TreeSet中的元素要实现Comparable接口。或者有一个自定义的比较器。...ts = new TreeSet(//new ComparatorByName());//传入了下边的ComparatorByName()就可以直接按姓名比较 person有了自然排序,treeset...有了比较器,以比较器为主,比较器常用(结合下边看)//按字母大小自然排序public static void demo1() { TreeSet ts = new TreeSet(); ts.add
public TreeSet() { this(new TreeMap()); } 每次我们创建一个TreeSet集合时,本质上就是new出了一个TreeMap(...)键值对集合,但是写到这里我还没有分析TreeMap的源码,但是这不影响我的分析,因为我已经分析完TreeSet集合的源码,整个的过程中没有阻塞性,所以分析TreeSet集合继续了。...接下来分析一下TreeSet集合中的first()方法,也就是获取TreeSet集合中第一个元素的方法,这个方法见到的很少,所以这里就分析一下。...我既然分享了如何获取TreeSet集合的第一个元素的方法,自然会去分析一下如何获取TreeSet集合获取最后一个元素pollLast()方法,所以继续分析一下了。...到这里自己想要分析的TreeSet集合就结束了
TreeSet 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的。...TreeSet定义 我们知道TreeMap是一个有序的二叉树,那么同理TreeSet同样也是一个有序的,它的作用是提供有序的Set集合。...同时在TreeSet中定义了如下几个变量。...public TreeSet(Comparator<?...public TreeSet(Collection<?
TreeSet 是 Set 集合的红黑树实现,但其内部并没有具体的逻辑,而是直接使用 TreeMap 对象实现。我们先来看看 TreeSet 的定义。...可以看到 TreeSet 实现了 NavigableSet 接口,而 NavigableSet 接口又继承了 接口。...image.png 原理 我们还是通过类成员变量、构造方法、核心方法来解析 TreeSet 的实现。...TreeSet(NavigableMap m) { this.m = m; } // 指定TreeMap的比较器 public TreeSet(Comparator<?...所以如果理解了 TreeMap,那么 TreeSet 就很简单了。
前言 首先要注意的是,本文章不涉及到红黑树的具体实现,也就是说不会逐行分析TreeMap和TreeSet的源码实现,因为红黑树看了也会忘的… 所以本文只是记录红黑树的一些基础介绍,以及TreeMap和...TreeSet两个类的公共API. ---- 红黑树 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。..., V> tailMap(K from, boolean inclusive) SortedMap tailMap(K fromInclusive) TreeSet...TreeSet是基于TreeMap实现的。...TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。这取决于使用的构造方法。
TreeSet(红黑树) 基于排列 顺序实现,元素不重复 实现了SortedSet接口,对集合元素自动排序。 元素对象的类型必须实现Comparable接口,指定排序规则。...红黑树 二叉查找树 TreeSet的使用 存储结构是红黑树。 第二个xyz是不可以加进来的。...红黑树的遍历: 现在如果 要加数据,那么怎么进行比较呢 ,就是如果转成coomparable,就是说如果要 把person加入到treeset中,必须实现comparable接口。...TreeSet使用案例 使用TreeSet集合实现字符串按照长度进行排序。 注意,是先比较长度,如果长度一样,就比较n2用他们自己的方法compareTo。
TreeSet 的使用以及其他知识点 ---- 文章目录 一、TreeSet 概述 二、TreeSet 的使用 1、构造方法 2、常用方法 三、其他知识点 1、关于 HashSet、LinkedHashSet...和 TreeSet 的区别 2、关于 红黑树的特点 3、关于 TreeSet 和 TreeMap 的区别 ---- 一、TreeSet 概述 TreeSet() 是使用二叉树的原理对新 add() 的对象按照指定的顺序排序...TreeMap 的底层是通过红黑树实现的,所以 TreeSet 底层也是通过红黑树实现的。TreeSet 最主要的特点就是对元素进行了排序。...super E> comparator) 构造TreeSet,根据指定的比较器进行排序 public TreeSet(Collection c) 构造一个包含指定集合中的元素的TreeSet,根据其元素的自然排序进行比较 public TreeSet(SortedSet s) 构造TreeSet,并使用与指定排序集相同的顺序
_05; import java.util.TreeSet; /* * TreeSet:能够对元素按照某种规则进行排序。...* 排序有两种方式 * A:自然排序 * B:比较器排序 * * TreeSet集合的特点:排序和唯一 * * 通过观察TreeSet的add()方法,我们知道最终要看TreeMap的put...) { // 创建一个TreeSet集合 TreeSet ts = new TreeSet(new Comparator() { @Override...; /* * TreeSet存储自定义对象并保证排序和唯一。... ts = new TreeSet(); //自然排序 // public TreeSet(Comparator comparator) //比较器排序 // TreeSet
---- 问题 (1)TreeSet真的是使用TreeMap来存储元素的吗? (2)TreeSet是有序的吗? (3)TreeSet和LinkedHashSet有何不同?...所以,也不废话了,直接上源码: package java.util; // TreeSet实现了NavigableSet接口,所以它是有序的public class TreeSet extends...TreeSet(Collection<?...总结 (1)TreeSet底层使用NavigableMap存储元素; (2)TreeSet是有序的; (3)TreeSet是非线程安全的; (4)TreeSet实现了NavigableSet接口,而NavigableSet...继承自SortedSet接口; (5)TreeSet实现了SortedSet接口;(彤哥年轻的时候面试被问过TreeSet和SortedSet的区别^^) 彩蛋 (1)通过之前的学习,我们知道TreeSet
领取专属 10元无门槛券
手把手带您无忧上云