java集合的LinkedHashSet

前言

之前文章,对Hashset进行了原理分析。Hahset的特点是无序,且不能重复。那我如果想有序不重复怎么办呢。LinkedHashset可以完全的满足你的要求。相比较于Hashset的无序,LinkedHashset是有序的,那么它是怎么实现有许序的呢。接下里的内容就是讲诉,他是怎么实现有序的。

LinkedHashset使用

首先,我们还是先来看下LinkeHashset的一些主要的方法如下图
在这里插入图片描述
和Hashset类似,主要的方法也是add和remove,分别为添加方法和删除方法。当然还有很多的方法我们就不在这里一一的介绍了。同样的它和Hashset一样也是不能重复的,添加相同的数据会添加失败,同样添加引用类型的数据,必须重写引用对象的hashcode方法和equals方法。接下我们再来验证下它是不是真的有序,如下图
在这里插入图片描述

LinkedHashset底层源码

首先我们看下Linkedhashset继承和实现,如下图
在这里插入图片描述
LinkedHashset是继承自Hashset,它的构造方法,也是调用的Hashset的构造方法,但是他的底层可不是Hashmap,如下图
在这里插入图片描述
Linkedhashset虽然是调用的Hashset的构造方法,但是确实调用的用LinkedHashMap初始化的构造方法。所以他的底层是LinkedHashMap,至于为什么LinkedHashMap可以实现有序性。你只需要记住LinkedHashMap本质就是在HashMap上多了一个双向链表,通过双向链表实现的有序性。详细内容等到LinkedHashMap再详细讲述。

总结

今天主要介绍了LinkedHashSet,他是继承Hashset,但是底层却和Hashset不一样,Hashset的低层是通过Hashmap实现的。而LinkedHashset底层是LinkedHashmap实现的,所以LinkedHashset是有序的,而Hashset是无序的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark---小鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值