
集合
文章平均质量分 93
理想万岁万万岁
毕业于重庆科技学院,从事java后端领域,热爱分享,热爱交友
展开
-
关于ArrayList的十三连问
来修饰数组并不表示不将其序列化,ArrayList在序列化时,最主要的是将其内部元素进行序列化而不是数组,再加上数组中可能存在大量空元素,若将数组进行序列化,对时间和空间无疑都是一种消耗。方法得到的List实例为ArrayList 实例,但需要注意的是,此处返回的ArrayList 实例为Arrays的内部类,其全限定类路径为。————————————————我是万万岁,我们下期再见————————————————在序列化时,通过遍历数组中的元素,将元素进行序列化,而非数组。原创 2023-08-12 09:00:00 · 353 阅读 · 0 评论 -
java源码阅读 - LinkedHashSet
前面文章中我们从源码详细介绍了继承于HashMap的LinkedHashMap,并通过图片示例讲解了LinkedHashMap是如何在HashMap的哈希表上将各个节点通过双向链表串起来的。也讲解了基于HashMap实现的HashSet,那么是否存在类似于LinkedHashMap原理的一种Set集合?答案是肯定的,而且是我们本篇文章要讲的顾名思义,LinkedHashSet是基于LinkedHashMap实现的一个Set集合。HashMap(必选)红黑树(可选)(必选)HashSet(必选)原创 2023-03-30 10:00:00 · 464 阅读 · 0 评论 -
java源码阅读 - TreeSet
在上期文章中,我们从源码层面详细分析了java集合框架中Set一族的实现HashSet,它的内部维护了一个HashMap对象作为内部存储,也就是说HashSet的底层结构为哈希表,今天我们介绍Set的另一个实现——TreeSet,对标HashSet与HashMap的关系,我们猜想TreeSet可能会维护一个TreeMap作为内部存储,事实也确实如此,因此,TreeSet的特性均继承于TreeMap,如元素有序等。在学习TreeSet源码之前,必须对TreeMap的源码了如指掌。原创 2023-03-29 10:00:00 · 1235 阅读 · 0 评论 -
java源码阅读 - HashSet
在往期文章中,我们从源码层面详细分析了java集合框架中List的实现如ArrayListLinkedListVectorQueue的实现如ArrayDequeMap的实现如HashMapTreeMapHashTable。他们有各自的底层实现和不同的特点。今天开始,我们进入java集合框架的新篇——Set,先看一下jdk对Set的定义是什么翻译:不包含重复元素的集合。更正式地说,集合不包含e1.equals(e2)这样的元素对e1和e2,最多包含一个空元素。从Set的定义我们了解到Set集合中的元素。原创 2023-03-28 13:25:52 · 280 阅读 · 0 评论 -
java源码阅读 - HashTable
从源码层面深度解析HashTable原创 2023-03-27 23:49:33 · 578 阅读 · 0 评论 -
java源码阅读 - LinkedHashMap
通过源码对LinkedHashMap详细分析原创 2023-03-26 00:12:41 · 689 阅读 · 0 评论 -
java源码阅读 - TreeMap
在上一篇文章中,我们介绍了java集合框架中的Map一族的HashMap源码解读,从中得知在HashMap中各个键值对的存储是无序的,导致我们在遍历它的时候无法得到一个有序的键值对集合。所以本文章给大家带来Map的另一个实现TreeMap,从使用上来看,TreeMap中的键值对是有序的;从底层实现来看,TreeMap是由红黑树实现的。这两点是TreeMap与HashMap最大的区别。同时也正因为TreeMap底层是由红黑树实现的,所以他是有序的。原创 2023-03-23 15:23:17 · 1063 阅读 · 0 评论 -
java源码阅读 - HashMap
往期文章用最简单的话讲最明白的红黑树java源码阅读 - ArrayDequejava源码阅读 - LinkedList(附动图说明)文章目录往期文章一、介绍二、类的声明三、底层实现四、内部类Node与TreeNode五、成员变量六、构造方法七、hash()方法八、comparableClassFor()方法九、tableSizeFor()方法十、扩容原理1.确认新的容量和阈值2.将原数组中的数据放在新数组中3.对红黑树的处理4.通过图例理解扩容细节5.如何判断出下标是否变化十一、putVal(原创 2023-03-15 09:36:35 · 247 阅读 · 0 评论 -
HashMap中putAll()方法批量保存的源码解读,并发现严重缺陷
本文通过源码分析HashMap中批量保存数据的方法putAll(),在分析中发现严重缺陷,一起看看吧原创 2023-03-14 11:40:28 · 805 阅读 · 1 评论 -
HashMap中put()方法源码解读
HashMap中put()方法源码解读,全网我最细原创 2023-03-13 13:25:02 · 229 阅读 · 0 评论 -
HashMap扩容原理,全网我最细
的策略,就是说实例化HashMap对象时,其实并没有立即对底层结构实例化,底层数组依然为空,因此当我们首次像该HashMap对象中put数据时,才会通过扩容来创建底层数组的实例。这时如果原阈值大于0,说明该原阈值目前只是暂时表示数组长度,就回到了上面的问题了,只需要将该原阈值作为新数组容量就可以了。遍历到原数组的下标为1的节点X,发现该位置仅有一个节点X,不存在链表和红黑树,如下图所示。————————————————我是万万岁,我们下期再见————————————————原创 2023-03-11 08:42:44 · 490 阅读 · 0 评论 -
HashMap中的tableSizeFor()方法是如何确定容量的
本文介绍HashMap是如何确定其容量的原创 2023-03-10 10:34:28 · 215 阅读 · 0 评论 -
HashMap中的hash()方法是如何解决哈希冲突的
通过源码深度解析HashMap中hash()方法是如何解决哈希冲突的原创 2023-03-09 10:37:36 · 222 阅读 · 0 评论 -
java源码阅读 - ArrayDeque
本篇文章从源码深度解析以循环队列实现的双端队列ArrayDeque原创 2023-02-21 15:47:21 · 200 阅读 · 0 评论 -
java源码阅读 - PriorityQueue
本文以源码为主深度解析java集合集合中的优先级队列PriorityQueue原创 2023-02-16 16:29:22 · 204 阅读 · 0 评论 -
java集合之Vector
本文通过与ArrayList源码的对比,学习Vector原创 2023-02-13 17:11:29 · 297 阅读 · 0 评论 -
java源码阅读 - LinkedList(附动图说明)
本文通过使用动图详细讲解LinkedList基本操作的每一行代码,让你不会也会原创 2022-11-14 22:34:57 · 502 阅读 · 0 评论 -
ArrayList万字说明书
长达万字的ArrayList使用说明书原创 2022-09-01 00:59:46 · 193 阅读 · 0 评论 -
ArrayList源码阅读
从头到尾手撕ArrayList源码原创 2022-08-18 01:04:58 · 461 阅读 · 0 评论