首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

java进阶|TreeSet源码分析

)键值对集合,但是写到这里我还没有分析TreeMap的源码,但是这不影响我的分析,因为我已经分析完TreeSet集合的源码,整个的过程没有阻塞性,所以分析TreeSet集合继续了。...java这门语言没有一个很高的把握,但是工作的内容还是可以的,那个时候自己都写了java8的写法,但是时过两年后自己才去输出和分享了java8的文章,所以觉得自己想写的文章是不是拖延了很久,读过我的文章读者的就知道...接下来分析一下TreeSet集合的first()方法,也就是获取TreeSet集合第一个元素的方法,这个方法见到的很少,所以这里就分析一下。...null) throw new NoSuchElementException(); return e.key;//返回获取到的entry节点的key,这就是set集合的元素...= null)//循环判断根节点的右自述节点是否为空,若不为空则循环判断 p = p.right; return p; } 继续分析TreeSet集合如何获取元素个数的方法

43920

java集合框架-TreeSet

介绍TreeSetJava集合框架实现了SortedSet接口的有序集合。它是基于红黑树(Red-Black Tree)实现的,能够自动进行元素的排序,且具有很高的查找效率。...与HashSet不同,TreeSet的元素是按照其自然顺序排序的,或者根据构造函数中提供的Comparator排序。...orange");System.out.println(set); // 输出结果:[apple, banana, orange]在这个示例,我们首先创建了一个TreeSet,然后向其中添加了三个字符串元素...添加和删除元素TreeSet提供了add()和remove()方法来添加和删除元素,它们的语法和用法与HashSet和LinkedHashSet的相同,不再赘述。...其中:first()方法返回TreeSet的第一个(最小的)元素。last()方法返回TreeSet的最后一个(最大的)元素。

24310

java的排序--排序容器_TreeSet与TreeMap

TreeSet数据排序两种方式: 注意:TreeSet是在添加数据时进行排序,数据更改不会影响原来的顺序,因此不能修改类数据,否则可能重复。...1)、若选用无参的new TreeSet()构造器,需要元素本身可以排序方能使用,也即实体类实现java.lang.Comparable接口重写compareTo接口。  ...()构造器 package top.wfaceboss.caseSort02; import java.util.TreeSet; public class TreeSetDemo { public...super E> comparator)构造器--提供额外的业务排序类(匿名内部类的方式) package top.wfaceboss.caseSort; import java.util.TreeSet...容器 // 由于Person类没有实现java.lang.Comparable重写compareTo接口 ,因此需要提供额外的业务排序类,否则会出错 TreeSet<

1.7K30

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

其特点如下: TreeSet 是基于 TreeMap 的 NavigableSet 实现; TreeSet 的元素存储在 TreeMap 的 key ,TreeMap 的 value 是一个常量对象...; 非线程安全; java8 新增分割器 spliterator() 方法 ---- 二、TreeSet 的使用 1、构造方法 方法名 方法说明 方法名 方法说明 public TreeSet() 无参构造方法...E pollLast() 获取最后一个元素,并将该元素从TreeMap删除 void writeObject(java.io.ObjectOutputStream s) 将TreeSet的“比较器、...容量,所有的元素值”都写入到输出流 void readObject(java.io.ObjectInputStreams) 从输入流读取TreeSet的“比较器、容量,所有的元素值” ---- 三...3、关于 TreeSet 和 TreeMap 的区别 TreeMap 和 TreeSetJava Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类

36310

TreeSet集合解析

: com.kevin.exercise10.User cannot be cast to java.lang.Comparable at java.util.TreeMap.put(TreeMap.java...:542) at java.util.TreeSet.add(TreeSet.java:238) at com.kevin.exercise10.TreeSetTest.main(TreeSetTest.java...(1)自然顺序(Comparable) TreeSet类的add()方法中会把存入的对象提升为Comparable类型 调用对象的compareTo()方法和集合的对象比较 根据compareTo...()方法返回的结果进行存储 (2)比较器顺序(Comparator) 创建TreeSet的时候可以指定一个Comparator 如果传入了Comparator的子类对象,那么TreeSet就会按照比较器的顺序排序...调用的对象是compare方法的第一个参数,集合的对象是compare方法的第二个参数 (3)两种方式的区别 TreeSet构造函数什么都不传,默认按照类Comparable的顺序(没有就报错

73620

关于 TreeSet 的使用

下面我们通过案例来看一下TreeSet的使用. 1、使用TreeSet)对String类型的数据进行存储,存储顺序默认按字母升序排序。...在本例题中,定义TreeSet集合,并添加多个字符串到集合,然后对集合进行遍历输出,并通过first()和last()方法来获取集合的第一个和最后一个元素。...在本例题中,定义TreeSet对象,并向集合添加整型数据,然后输出集合对象,也就是将数据放到输出,这是集合的默认输出格式。...小伙伴可以参考floor()方法进行练习呦~ 3、当TreeSet添加自定义类的对象时,是如何进行排序的呢?...2)定义PersonComparato类,实现年龄的升序排序 3、在测试类的主方法,定义五个Person:类的对象,并添加到TreeSet,然后显示集合所有元素。

59220

Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet

HashSet类   HashSet具有以下特点: HashSet具有很好的对象检索性能,当从HashSet查找某个对象时,Java系统首先调用对象的hashCode方法获得该对象的哈希码,然后根据哈希码找到对应的存储区域...Object first();   //第一个;返回集合的第一个元素。 Object last();   //最后一个;返回集合的最后一个元素。...Object lower(Object o);    //前一个;返回集合位于指定元素之前的元素(即小于指定元素的最大元素,参考元素不需要是TreeSet的元素)。 ...Object higher(Object o);  //后一个;返回集合位于指定元素之后的元素(即大于指定元素的最小元素,参考元素不需要是TreeSet的元素)。...所以当我们把Person对象添加到persons集合时,无须Person类实现Comparable接口,因为此时TreeSet无须通过Person对象来比较大小,而是由与TreeSet关联的Compartor

1.2K90

Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较

泥瓦匠的记忆宫殿: 1、不允许包含相同元素 2、判断对象是否相同,根据 equals 方法 二、HashSet 一个按着 Hash 算法来存储集合的元素,其元素值可以是 NULL。...HashSetObj 类满足我们刚刚的要求,所以集合只有一个且它的HashCode值为2。 HashCodeObj 类虽然它们HashCode值为 1,但是他们不相等。...四、TreeSet TreeSet 使用树结构实现(红黑树),集合的元素进行排序,但是添加、删除和包含的算法复杂度为 O(log(n))。...举个例子吧,首先我们定义一个 Bird 类:(鸟是泥瓦匠最喜欢的动物) 然后用TreeSet添加Bird类: Run 一下,控制台输出如下: 答案很明显,TreeSet 是排序的。...java.lang.Comparable 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。

20040

TreeSet源码解析

在这一篇我们主要分享一下TreeSet集合的相关知识。在上一篇我们介绍了HashSet集合的底层实现,并且发现HashSet底层是通过HashMap集合实现的。...那么顾名思义今天我们介绍的TreeSet集合,底层就是通过TreeMap集合实现的。那么废话不多说,我们直接看TreeSet的初始化代码。 初始化 ?...下面我们看一下TreeSet集合的add方法的底层实现。 ? HashSet的add方法的实现逻辑基本和HashSet的实现逻辑一样。都是直接调用了底层Map的实现类。...也就是调用TreeMap的put方法,并且将value值设置为Object。...既然TreeSet底层是通过TreeMap实现的,那么我们很容易可以总结出TreeSet具有以下的特性: 总结 保存在TreeSet集合的元素,必须保证能够排序 TreeSet集合不能保存null

44020
领券