TreeSet 与 TreeMap 相关

本文深入探讨了TreeSet和TreeMap的内部实现原理,包括它们的底层数据结构——二叉树,以及如何通过实现Comparable接口或使用Comparator接口来定制元素的排序规则。此外,还介绍了Collections工具类在集合操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 TreeSet集合

1:TreeSet集合底层是一个TreeMap
2:TreeMap 集合底层是一个二叉树
3:放到TreeSet集合中的元素,相当于放到了TreeMap集合的key部分
4:TreeSet集合中的元素:无序不可重复,但是可以按照元素的大小顺序自动排序,称为可排序集合
5:如何对自定义的元素进行排序?
1:放在TreeSet集合中的元素需要实现java.lang.Comparable接口,且实现compareTo方法。equals可以不写。

2:单独传入比较器

自平衡二叉树

遇到根节点就先遍历左
在这里插入图片描述

2 最后结论

放到TreeSet或者TreeMap集合key部分的元素要想做到排序,包括两种方式:
第一种:放在集合中的元素实现java.lang.Comparable接口。
第二种:在构造TreeSet或者TreeMap集合的时候给它传一个比较器对象。
Comparable和Comparator怎么选择呢?
当比较规则不会发生改变的时候,或者说当比较规则只有1个的时候,建议实现Comparable接口。
如果比较规则有多个,并且需要多个比较规则之间频繁切换,建议使用Comparator接口。
Comparator接口的设计符合OCP原则。**

3 Collections 工具类

java.util.Collection 集合接口
java.util.Collections 集合工具类,方便集合的操作。

     // ArrayList集合不是线程安全的。
    List<String> list = new ArrayList<>();
    // 变成线程安全的
    Collections.synchronizedList(list);

Collections.sort()
注意:对List集合中元素排序,需要保证List集合中的元素实现了: Comparable接口。

对Set集合怎么排序呢?
List myList = new ArrayList<>(set)
将Set集合转换成List集合
Collections.sort(myList)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值