首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Kevin-ZhangCG

    TreeSet集合解析

     TreeSet是实现Set接口的实现类。所以它存储的值是唯一的,同时也可以对存储的值进行排序,排序用的是二叉树原理。所以要理解这个类,必须先简单理解一下什么是二叉树。 TreeSet的基本使用 @Test public void test() { Set<Integer> set = new TreeSet<Integer>(); 如果TreeSet里面存储的是对象呢?会出现什么情况呢? TreeSet有这么一个构造方法:   TreeSet(Comparator<? super E> comparator) 构造一个新的,空的树集,根据指定的比较器进行排序。    ()方法返回的结果进行存储 (2)比较器顺序(Comparator) 创建TreeSet的时候可以指定一个Comparator 如果传入了Comparator的子类对象,那么TreeSet就会按照比较器中的顺序排序

    91820发布于 2019-01-28
  • 来自专栏bit哲学院

    java treeset_java基础教程案例: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,它根据指定比较器进行排序。

    72320发布于 2021-04-26
  • 来自专栏吉林乌拉

    TreeSet源码解析

    在这一篇中我们主要分享一下TreeSet集合的相关知识。在上一篇中我们介绍了HashSet集合的底层实现,并且发现HashSet底层是通过HashMap集合实现的。 那么顾名思义今天我们介绍的TreeSet集合,底层就是通过TreeMap集合实现的。那么废话不多说,我们直接看TreeSet的初始化代码。 初始化 ? 下面我们看一下TreeSet集合中的add方法的底层实现。 ? HashSet中的add方法的实现逻辑基本和HashSet中的实现逻辑一样。都是直接调用了底层Map的实现类。 既然TreeSet底层是通过TreeMap实现的,那么我们很容易可以总结出TreeSet具有以下的特性: 总结 保存在TreeSet集合中的元素,必须保证能够排序 TreeSet集合中不能保存null 元素,否则,虚拟机会抛出异常 TreeSet集合是有序的集合类,但是,不能保证元素的添加顺序与遍历顺序一致 TreeSet集合不是线程安全的集合类,在多线程环境使用时,要添加额外的同步代码,已保证线程安全

    58820发布于 2019-08-14
  • 来自专栏陶士涵的菜地

    集合框架(TreeSet

    TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 对象的add()方法,参数:Student对象 遍历集合 import java.util.TreeSet; public class TreeSetDemo { /** * @param args */ public static void main(String[] args) { TreeSet<Student> treeset=new TreeSet<Student>(); treeset.add(new Student("taoshihan1",30)); treeset.add(new Student ("taoshihan2",20)); treeset.add(new Student("taoshihan3",40)); for(Student student:treeset

    48420发布于 2019-09-10
  • 详解 TreeMap 和 TreeSet

    认识 TreeMap 和 TreeSet TreeMap 和 TreeSet 是Java 中利用红黑树实现的 Map 和 Set。 TreeSet TreeSet 只存储 Key,是一种纯Key 模型。它的底层其实是 TreeMap,结构也是二叉搜索树。 构造方法 1. 无参构造方法 由于 TreeSet 的底层是 TreeMap(前面文章已讲过),因此,TreeSet 的底层结构也是二叉搜索树,也就意味着放入 TreeSet 中的元素必须是可比较的(即实现了 Comparable

    16810编辑于 2025-12-16
  • 来自专栏一只无聊的清风

    关于 TreeSet 的使用

    TreeSet是一个有序的集合,它支持自然排序和根据实现Comparator或Comparable接口进行排序。 下面我们通过案例来看一下TreeSet的使用. 1、使用TreeSet)对String类型的数据进行存储,存储顺序默认按字母升序排序。 运行效果 2、使用TreeSet对Intege类型数据进行存储,存储l顺序默认按数字从小到大排序。 在本例题中,定义TreeSet对象,并向集合中添加整型数据,然后输出集合对象,也就是将数据放到中输出,这是集合的默认输出格式。 小伙伴可以参考floor()方法进行练习呦~ 3、当TreeSet中添加自定义类的对象时,是如何进行排序的呢?

    88820编辑于 2022-04-23
  • 来自专栏JavaEdge

    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(...)

    55500发布于 2020-04-12
  • 来自专栏JavaEdge

    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接口 ?

    54241发布于 2020-05-27
  • 来自专栏飞鸟的专栏

    HashSet、TreeSet的特点

    HashSet和TreeSet都是Java中常见的集合框架,它们都实现了Set接口,并提供了存储无序、不可重复元素的功能。但是它们的实现方式、性能和适用场景有所不同。 TreeSet可以保证元素的唯一性,并且可以按照自然顺序或自定义比较器的方式对元素进行排序。TreeSet的添加、删除、查找操作的时间复杂度都是O(log n)。 TreeSet的缺点:不能存储null值;迭代TreeSet的顺序是按照元素的顺序输出的;比HashSet的性能差一些,因为需要维护红黑树的平衡;自定义比较器时需要额外的开销。 TreeSet<Integer> set = new TreeSet<>(); // 添加元素 set.add(5); set.add(3); set.add(8); 根据具体的需求,我们可以选择使用HashSet或TreeSet

    1.3K20编辑于 2023-04-04
  • 来自专栏玖叁叁

    java集合框架-TreeSet

    与HashSet不同,TreeSet中的元素是按照其自然顺序排序的,或者根据构造函数中提供的Comparator排序。 使用方法构造函数TreeSet提供了以下两个构造函数:TreeSet():创建一个默认的空TreeSet,其中的元素将按照自然顺序进行排序。TreeSet(Comparator<? 下面是一个使用自然顺序进行排序的示例:TreeSet<String> set = new TreeSet<>();set.add("apple");set.add("banana");set.add(" 其中:first()方法返回TreeSet中的第一个(最小的)元素。last()方法返回TreeSet中的最后一个(最大的)元素。 下面是一个示例:TreeSet<Integer> set = new TreeSet<>();set.add(1);set.add(3);set.add(5);set.add(7);set.add(9)

    50010编辑于 2023-05-07
  • 来自专栏wym

    JAVA Set集合 TreeSet

    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

    96320发布于 2019-03-05
  • 来自专栏Android开发指南

    10.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

    1.2K100发布于 2018-05-14
  • 来自专栏用户1880875的专栏

    08 HashSet和TreeSet探究

    之前我们看了HashMap和TreeMap,今天我们看看他们的小弟:HashSet和TreeMap

    25810发布于 2021-07-27
  • 来自专栏后端Coder

    java进阶|TreeSet源码分析

    public TreeSet() { this(new TreeMap<E,Object>()); } 每次我们创建一个TreeSet集合时,本质上就是new出了一个TreeMap( )键值对集合,但是写到这里我还没有分析TreeMap的源码,但是这不影响我的分析,因为我已经分析完TreeSet集合的源码,整个的过程中没有阻塞性,所以分析TreeSet集合继续了。 接下来分析一下TreeSet集合中的first()方法,也就是获取TreeSet集合中第一个元素的方法,这个方法见到的很少,所以这里就分析一下。 我既然分享了如何获取TreeSet集合的第一个元素的方法,自然会去分析一下如何获取TreeSet集合获取最后一个元素pollLast()方法,所以继续分析一下了。 到这里自己想要分析的TreeSet集合就结束了

    60820发布于 2020-05-29
  • 来自专栏微信公众号【Java技术江湖】

    走近HashSet,TreeSet与LinkedHashSet

    TreeSet 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的。 TreeSet定义 我们知道TreeMap是一个有序的二叉树,那么同理TreeSet同样也是一个有序的,它的作用是提供有序的Set集合。 同时在TreeSet中定义了如下几个变量。 public TreeSet(Comparator<? public TreeSet(Collection<?

    64230发布于 2019-09-25
  • 来自专栏陈树义

    集合系列 Set(八):TreeSet

    TreeSet 是 Set 集合的红黑树实现,但其内部并没有具体的逻辑,而是直接使用 TreeMap 对象实现。我们先来看看 TreeSet 的定义。 可以看到 TreeSet 实现了 NavigableSet 接口,而 NavigableSet 接口又继承了 接口。 image.png 原理 我们还是通过类成员变量、构造方法、核心方法来解析 TreeSet 的实现。 TreeSet(NavigableMap<E,Object> m) { this.m = m; } // 指定TreeMap的比较器 public TreeSet(Comparator<? 所以如果理解了 TreeMap,那么 TreeSet 就很简单了。

    49421发布于 2019-08-29
  • 【数据结构】TreeMap & TreeSet

    常见方法说明 注意: Set是继承自Collection的一个接口类 Set中只存储了key,并且要求key一定要唯一 TreeSet的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到 Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入 TreeSet中不能插入null的key,HashSet可以。 TreeSet和HashSet的区别【HashSet在课件最后会讲到】 TreeSet的使用案例 与TreeMap类似的就不重新演示了 public static void main(String[] args) { Set<Integer> treeSet = new TreeSet<>(); treeSet.add(1); treeSet.add(9 ); treeSet.add(5); treeSet.add(3); System.out.println(Arrays.toString(treeSet.toArray

    7010编辑于 2026-01-12
  • 来自专栏呼延

    Java中 Treemap和 Treeset的使用

    前言 首先要注意的是,本文章不涉及到红黑树的具体实现,也就是说不会逐行分析TreeMap和TreeSet的源码实现,因为红黑树看了也会忘的… 所以本文只是记录红黑树的一些基础介绍,以及TreeMap和 TreeSet两个类的公共API. ---- 红黑树 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 , V> tailMap(K from, boolean inclusive) SortedMap<K, V> tailMap(K fromInclusive) TreeSet TreeSet是基于TreeMap实现的。 TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。这取决于使用的构造方法。

    1.5K10发布于 2019-07-01
  • 来自专栏项目文章

    Java集合学习3:Set集合-TreeSet

    TreeSet(红黑树) 基于排列 顺序实现,元素不重复 实现了SortedSet接口,对集合元素自动排序。 元素对象的类型必须实现Comparable接口,指定排序规则。 红黑树 二叉查找树 TreeSet的使用 存储结构是红黑树。 第二个xyz是不可以加进来的。 红黑树的遍历: 现在如果 要加数据,那么怎么进行比较呢 ,就是如果转成coomparable,就是说如果要 把person加入到treeset中,必须实现comparable接口。 TreeSet使用案例 使用TreeSet集合实现字符串按照长度进行排序。 注意,是先比较长度,如果长度一样,就比较n2用他们自己的方法compareTo。

    18010编辑于 2024-06-07
  • 来自专栏迁移内容

    Java集合:关于 TreeSet 的内容盘点

    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<? extends E> c) 构造一个包含指定集合中的元素的TreeSet,根据其元素的自然排序进行比较 public TreeSet(SortedSet<E> s) 构造TreeSet,并使用与指定排序集相同的顺序

    1.4K10编辑于 2022-12-01
领券