TreeSet和SortedSet

本文对比了Java集合框架中的两种不同类型的Set实现——TreeSet与HashSet。TreeSet基于红黑树提供排序功能,并确保元素不重复且不允许null值。而HashSet使用哈希表实现,提供高效的增删查操作,允许单个null值。

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

这两天写接口,看到对方提供的接口,签名生成方法里,写到SortedSet和TreeSet,所以查了点资料,看了一下treeset,总结一下,避免以后忘记。

首先,最重要的,就是有序。

SortedSet继承自Set,他根据对象的比较顺序(可以是自然顺序,也可以是自定义的顺序),而不是插入顺序进行排序;

LinkedHashSet,维护的是插入时的顺序;

TreeSet是SortedSet的唯一实现类,红黑树实现,树形结构,它的本质可以理解为是有序,无重复的元素的集合。

因为都是有序的,所以相应的就有get,remove和add方法。

HashSet,看他的源码可以知道,他的底层,是hashmap


一段别人总结的话:

TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值。 

2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。 

3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例 。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值