Loading... > java.util.Set:接口。 > 没有对采集接口进行功能扩展,但比采集接口功能。 # 1、特点 1. 元素拒绝重复; 2. 元素没有索引。 # 2、子类 ## 2.1、哈希集 java.util.HashSet:重点是哈希量位置表(HashMap支持)元素无。根据对象的中值确定元素在集合的,因此具有很好的访问和性能保证元素的唯一性。方式依赖于 `hashCode()` 和 `equals()` 方法。 * 哈希值:是一个十进制的,由系统随机给出(就是对象的地址值,是逻辑地址、模拟,不是物理地址。)对象类的 `int hashCode()`字符串类方法写了一段代码,同一个字符串方法的值相同。 * HashSet 存储数据的结构(哈希集合) ![哈希表](https://blog.fivk.cn/usr/uploads/2021/11/1813901927.png) 哈希表是由数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的。 在JDK1.8之前,元素链表实现+链表实现,即使用链表处理,链表中的元素链表存储在链表中。元素链时,通过关键值汇总到下面的汇总。而JDK1.8中,链表中采用数组++红黑实现,当链表将超过半树超值(8),这样缩小了寻找时间。 ![哈希图](https://blog.fivk.cn/usr/uploads/2021/11/2733504146.png) * 拒绝重复的原则 集合在调用添加方法是,会调用元素的hashCode()和equals(判断元素是否重复。 `hashCode()` 和 `equals()` 方法。 ``java有编号 public static void main(String[] args) { `` 自定义对象的存储(保证元素唯一,必须重写hashCode()和equals()方法) ``java有编号 public class Test36 { `` ``java有编号 public class Test37 { `` ## 2.2、LinkedHashSet java.util.edHashSet:元素链。继承了HashSet类是散表(数组+链表+红黑树)+表(记录元素的顺序,保证元素顺序)。 ``java有编号 public static void main(String[] args) { `` ## 2.3、树集 java.util.TreeSet:一直是二叉树实现,一般是为了排序元素。按照顺序排列,默认是按照自然顺序排列。 > 感谢小伙伴们的关注! > 你的点赞、评论、关注、收藏是对博主的最大鼓励! > 持续更新JavaSE笔记学习!欢迎订阅专栏! 最后修改:2021 年 11 月 21 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏