【Java-12】关于Set

/**
 *  |---HashSet:Set接口的主要实现类,线程不安全,可以存储null值
 *      |---LinkedHashSet:作为HashSet的子类,遍历其内部数据时可以按照添加的顺序遍历
 *  |---TreeSet:可以按照指定属性的方法进行排序
 *  Set中添加的元素一定要重写equals和HashCode方法
 *
 * @author Baobao
 * @create 2021-08-13  18:21
 */
public class SetTest {
    /*
    set无序,不可重复。
    如何理解他的无序性?以HashSet说明
        1.无序性:不等于随机性
            存储的数据在底层的数组中不一定是按照索引的顺序添加。
            而是根据数据的哈希值进行排序
        2.不可重复性:保证添加的元素按照equals方法判断时不能返回true

    添加元素的过程:以HashSet为例
        添加元素A:
        调用元素A所在类的HashCode方法,计算哈希值,通过某种算法计算出在
        底层数组的存放位置:即,索引位置;判断数组此位置上是否已经有元素,
        如果,这个位置上没有其他元素,则元素A直接添加;如果有其他元素B,或者
        已经存在以链表形式存储的多个元素,首先比较元素A和元素B的哈希值,如果
        哈希值不相同,则A添加成功,如果哈希值相同,就调用A所在类的equals方法
        ,返回true就表示A添加失败;如果返回false,则元素A添加成功,以链表
        顺序存储

    LinkedHashSet:
        作为HashSet的子类,在添加数据的同时还维护了两个引用,记录前驱和后继
        对于频繁的遍历操作,效率更高。

    TreeSet:
        添加进去的元素得是相同类的对象
        

     */
    @Test
    public void test01(){
        Set set=new HashSet();

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值