java中Set的深入学习

本文深入探讨了Set接口的实现类HashSet、LinkedHashSet和TreeSet的特点与使用场景。详细解析了HashSet的存储原理,包括元素的存储位置由哈希值决定,以及在不同JDK版本中的变化。对比了LinkedHashSet和HashSet在遍历效率上的差异。阐述了TreeSet的自然排序和定制排序机制,以及添加元素的要求。

Set

1.HashSet作为Set接口的主要实现类,线程不安全,可以存储null值,TreeSet可以按照添加对象的属性进行排序。

2.Set集合的无序性,不等于随机性。以HashSet为例,存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。
jdk7元素a放到数组中,指向原来的元素。
jdk8原来的元素在数组中,指向元素a。(七上八下)

3.对于频繁的遍历操作,LinkedHashSet高于HashSet

4.TreeSet
向TreeSet中添加数据,要求是相同类的对象。
两种排序方式,自然排序和定制排序。
自然排序中,比较两个对象是否相同的标准为:ComparaTo()返回0,不再是equals()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值