前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >java集合框架-TreeSet

java集合框架-TreeSet

原创
作者头像
玖叁叁
发布2023-05-07 13:39:56
发布2023-05-07 13:39:56
28600
代码可运行
举报
文章被收录于专栏:玖叁叁玖叁叁
运行总次数:0
代码可运行

介绍

TreeSet是Java集合框架中实现了SortedSet接口的有序集合。它是基于红黑树(Red-Black Tree)实现的,能够自动进行元素的排序,且具有很高的查找效率。与HashSet不同,TreeSet中的元素是按照其自然顺序排序的,或者根据构造函数中提供的Comparator排序。

TreeSet继承自AbstractSet类,并且实现了NavigableSet接口,它提供了一系列的方法来进行元素的插入、删除、查找和遍历操作。同时,它还提供了一些用于排序和检索的方法,如first()last()ceiling()floor()等。

由于TreeSet是有序的集合,所以它适用于那些需要对集合进行排序的场景,例如需要按照字母顺序或者数字大小进行排序的场景。

使用方法

构造函数

TreeSet提供了以下两个构造函数:

  • TreeSet():创建一个默认的空TreeSet,其中的元素将按照自然顺序进行排序。
  • TreeSet(Comparator<? super E> comparator):创建一个空的TreeSet,其中的元素将按照指定的比较器进行排序。

其中,Comparator是一个函数式接口,用于比较两个对象的大小关系。如果我们不提供Comparator参数,TreeSet将使用元素自身的自然顺序进行排序,如果元素不实现Comparable接口,则会抛出ClassCastException异常。

下面是一个使用自然顺序进行排序的示例:

代码语言:javascript
代码运行次数:0
复制
TreeSet<String> set = new TreeSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
System.out.println(set); // 输出结果:[apple, banana, orange]

在这个示例中,我们首先创建了一个TreeSet,然后向其中添加了三个字符串元素"apple"、"banana"和"orange",最后使用println()方法打印集合,可以看到集合中的元素是按照字母顺序进行排序的。

添加和删除元素

TreeSet提供了add()remove()方法来添加和删除元素,它们的语法和用法与HashSet和LinkedHashSet中的相同,不再赘述。

查找元素

与HashSet和LinkedHashSet不同的是,TreeSet提供了一些用于查找元素的方法,如first()last()ceiling()floor()等。这些方法将返回一个与给定元素相关联的元素。其中:

  • first()方法返回TreeSet中的第一个(最小的)元素。
  • last()方法返回TreeSet中的最后一个(最大的)元素。
  • ceiling(E e)方法返回在TreeSet中大于或等于给定元素e的最小元素,如果不存在这样的元素,则返回null。
  • floor(E e)方法返回在TreeSet中小于或等于给定元素e的最大元素,如果不存在这样的元素,则返回null。

下面是一个示例:

代码语言:javascript
代码运行次数:0
复制
TreeSet<Integer> set = new TreeSet<>();
set.add(1);
set.add(3);
set.add(5);
set.add(7);
set.add(9);
System.out.println(set.first()); // 输出结果:1
System.out.println(set.last()); // 输出结果:9
System.out.println(set.ceiling(6)); // 输出结果:7
System.out.println(set.floor(4)); // 输出结果:3

在这个示例中,我们首先创建了一个TreeSet,然后向其中添加了五个整数元素1、3、5、7和9。接着,我们使用first()last()方法分别获取集合中的第一个和最后一个元素,使用ceiling()方法获取大于等于6的最小元素,使用floor()方法获取小于等于4的最大元素。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 使用方法
    • 构造函数
    • 添加和删除元素
    • 查找元素
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档