Set及其实现类特点

java.util.Collection:存储一个一个的数据

        子接口:Set存储无序的、不可重复的数据(高中学习的集合)

                HashSet:主要实现类;底层使用的是HashMap,即使用数组+单向链表+红黑树结构进行存储;(jdk8之中)

                        LinkedHashSet:是HashSet的子类;在现有的组+单向链表+红黑树结构的基础上,又添加了一组双向链表,用于记录添加元素的先后顺序。即,我们可以按照添加元素的顺序实现遍历。便于频繁的查询操作。

                TreeSet:底层使用红黑树存储,可以按照添加的元素的指定的属性的大小顺序进行遍历。

无序性: != 随机性。

                添加元素的顺序和遍历元素的顺序不一致,是不是就是无序性?No!

                到底什么是无序性?与添加的元素的位置有关,不像ArrayList一样是依次紧密排列的。

                这里是根据元素的哈希值,计算其在数组中的存储位置,此位置不是一次排列的,表现为无序性。

不可重复性:添加到Set中的元素是不能相同的,比较的标准:需要判断hashCode()得到的哈希值以及equals()得到的boolean结果

                哈希值相同且equals()为true,则是重复的。

添加到HashSet/LinkedHashSet中元素的要求:

        要求元素所在的类需要重写两个方法:equals()和hashCode()

        同时,要求equals()和hashCode()要保持一致性,我们只需要在IDEA中自动生成两个方法的重写即可,即可保证两个方法的一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值