首页
学习
活动
专区
工具
TVP
发布

吉林乌拉

专栏作者
113
文章
104818
阅读量
23
订阅数
LinkedHashSet源码解析
在上一篇中我们介绍了LinkedHashMap集合的底层实现,并了解了LinkedHashMap底层是通过HashMap集合实现的。所以LinkedHashMap集合除了具有自己独特的特性外,其它的特性基本和HashMap的特性是一样的。那么在这一篇我们将学习LinkedHashSet集合的知识。在HashSet这篇文章中我们已经介绍过HashSet底层也是通过HashMap集合实现的。所以我们通过LinkedHashSet集合的名字就基本可以猜到,LinkedHashSet集合底层应该就是用LinkedHashMap集合实现的。这是因为只有LinkedHashMap这种集合的底层实现才能保证LinkedHashSet集合添加元素的顺序与访问元素的顺序一致,这也就是LinkedHashSet集合相比HashSet集合的一种独特的特性。为了证明我们上述所说的,我们简单查看一下LinkedHashSet集合的源码,因为大部分源码涉及到的逻辑已经在LinkedHashMap集合中介绍过了,所以这里我们只是简单的查看,不做过多的说明。还是和其它集合一样 ,我们首先看LinkedHashSet集合的初始化。
吉林乌拉
2019-08-14
3900
HashMap源码解析
在前几篇中我们主要介绍了ArrayList、LinkedList、Vector、Stack等集合的底层实现及相关特性,并且我们知道在上述集合类中无论底层是采用数组实现的还是采用双链表实现的,它们都有各自的缺点。例如底层用数组实现的集合它的特性是检索速度非常快,但如果要删除中间的元素时,性能会比较低。而底层用双链表实现的集合的特性是删除元素的速度非常快,但检索元素的速度较慢。那么这时就会有人想,在Java中有没有一种集合,即检索元素的速度快,删除元素的速度也快呢?
吉林乌拉
2019-08-14
5490
HashSet源码解析
今天我们分析一下HashSet的底层实现,因为HashSet底层是通过HashMap实现的。 所以HashSet底层也是通过哈希表的数据结构存储的。所以这里我们就不在介绍有关数据结构方面的知识了,有不了解哈希表底层实现的可以去浏览HashMap这篇文章。下面我们将和其它集合一样,从HashSet的初始化方面着手,来分析一下HashSet的底层实现。
吉林乌拉
2019-08-14
4410
Hashtable源码解析
今天我们来分析一下Hashtable的底层实现。提到Hashtable可能对于有些人来说会比较陌生,因为不经常使用。这是因为Hashtable是很早就有的集合类了,因为它是在JDK1.0版本中存在的。HashMap集合是在Hashtable集合之后才有的。也可以理解为HashMap集合是优化后的Hashtable。所以它们底层的实现方式几乎是一样,但它们也有些不同的地方要注意,并且它们都是用哈希表的方式存储的。既然我们已经掌握了HashMap的底层实现,那么我们在分析Hashtable时会比较容易,所以本篇中将直接分析Hashtable的底层源码,将不在介绍哈希表的相关知识了。还是和其它集合一样,我们还是先看Hashtable的初始化。
吉林乌拉
2019-08-14
4280
IdentityHashMap集合源码解析
在这一篇中我们将介绍一下IdentityHashMap集合的相关知识。看名字我们知道IdentityHashMap集合底层是通过HashMap集合实现的。那么按照我们分析其它集合一样,它也一定是具有某种特殊的特性的,否则Java也不会提供一个单独的IdentityHashMap集合了。我们先不介绍IdentityHashMap集合有哪种特性,我们先看下面的例子,然后在做详细说明。
吉林乌拉
2019-08-14
3240
ConcurrentHashMap集合源码解析
在我们介绍的这么多集合类中只有Hashtable、Stack、Vector这3个集合类是线程安全的,也就是我们不需要添加额外的代码就可以在多线程环境中使用。当然我们也可以通过添加额外的代码使一个非线程安全的集合类,变成线程安全的。主要的方式有两种。
吉林乌拉
2019-08-14
3060
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档