LinkedHashSet与TreeSet

部署运行你感兴趣的模型镜像

区别

类型实现特点
TreeSethashMap、实现sortedSet接口升序(基本类型……),自定义
LinkedHashSetHashSet初始顺序

**注意点:
1.treeSet的排序和toString实际上是基于 插入的对象的 compareTo
和toString方法
换言之:就是插入的对象的类需要有comparable接口
2.set都不可以使用 collections.sort( List l)
你看我里面的参数哦,知道原因了吧
3.linkedHashSet的出现主要是为了规避 hashSet所造成的顺序混乱
和TreeSet因关联而造成的开销
**

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

### 特点 - **HashSet**:它不保证元素的顺序,元素的存储位置由其 `hashCode` 值决定,具有快速的插入、删除查找操作,是一种快速的 `Set` 实现。在一个 `HashSet` 中,没有重复元素,这也是使用 `Set` 最主要的原因之一 [^4]。 - **LinkedHashSet**:集合同样根据元素的 `hashCode` 值来决定元素的存储位置,同时使用链表维护元素的次序,使得元素看起来像是以插入顺序保存的。在迭代访问 `Set` 中的全部元素时,性能比 `HashSet` 好,但是插入时性能稍微逊色于 `HashSet` [^1]。 - **TreeSet**:会对元素进行排序,默认按照元素的自然顺序排序,能提供一个已经排好序的 `Set` [^4]。 ### 使用方法 以下是使用 Java 语言对这三种 `Set` 的基本使用示例: ```java import java.util.HashSet; import java.util.LinkedHashSet; import java.util.TreeSet; import java.util.Set; public class SetExample { public static void main(String[] args) { // 使用 HashSet Set<String> hashSet = new HashSet<>(); hashSet.add("D"); hashSet.add("E"); hashSet.add("F"); hashSet.add("A"); hashSet.add("B"); hashSet.add("C"); System.out.println("HashSet 顺序: " + hashSet); // 使用 LinkedHashSet Set<String> linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add("B"); linkedHashSet.add("A"); linkedHashSet.add("D"); linkedHashSet.add("E"); linkedHashSet.add("C"); linkedHashSet.add("F"); System.out.println("LinkedHashSet 顺序: " + linkedHashSet); // 使用 TreeSet Set<String> treeSet = new TreeSet<>(); treeSet.add("D"); treeSet.add("E"); treeSet.add("F"); treeSet.add("A"); treeSet.add("B"); treeSet.add("C"); System.out.println("TreeSet 顺序: " + treeSet); } } ``` ### 区别 - **顺序方面**:`HashSet` 不保证元素的顺序;`LinkedHashSet` 按元素的插入顺序保存元素;`TreeSet` 会对元素进行排序,默认按自然顺序 [^1][^2][^3][^4]。 - **性能方面**:`HashSet` 在插入、删除查找操作上性能较好;`LinkedHashSet` 在迭代访问全部元素时性能比 `HashSet` 好,但插入性能稍逊;`TreeSet` 由于要进行排序,插入删除操作相对较慢 [^1][^4]。 - **使用场景方面**:如果需要快速的 `Set`,应使用 `HashSet`;如果需要一个已排好序的 `Set`,则使用 `TreeSet`;如果想按插入顺序读取元素,应选择 `LinkedHashSet` [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值