
JDK集合源码
文章平均质量分 75
学习笔记
kaico2018
喜欢是一种动力,兴趣是一位老师。
展开
-
HashMap 和 HashSet 源码分析
HashMap 简单介绍1、HashMap和 HashTable的区别?HashMap 线程不安全,HashTable 线程安全。2、Map 接口中Node对象的作用Node类的源码,采用链表数据结构,因为 key的 hashcode可能存在相同但是key不相同的情况,hahscode相同的key都存在一个链表数据结构上,再通过equals 比较值。就是为了解决hashcode冲突问题。Node 表示存放在HashMap 中的一条键值对,主要用来存储Map集合的元素。hashcode 和equ原创 2022-03-16 17:46:51 · 1070 阅读 · 0 评论 -
LinkedList 源码分析
LinkedList 底层链表结构分析数组与链表数据结构区别在数组中存放一种相同的元素按照一定的顺序存放;数组的存储空间是连续,占用内存比较大,所以它的发杂度空间很大;但是数组的查询效率非常高,故二分时间复杂度小。算法的时间复杂度和空间复杂度:算法的时间复杂度指的就是一个算法执行所耗费的时间0(1)算法的空间复杂度指的就是一个算法的空间复杂度(SpaceComplexity)S(n)定义为该算法所耗费的存储空间所以:数组查询效率比较高、但是增删效率比较低,链表数据结构查询效率比较低,但是增删效率原创 2022-03-10 19:28:18 · 306 阅读 · 0 评论 -
ArrayList 和 Vector 源码分析
ArrayList构造函数源码分析源码如下图:在集合初始化时,如果执行的是没有参数的构造函数,则集合对象中的数组默认是空数组,数组长度为0。ArrayList添加方法源码分析直接添加元素方法:默认添加到集合(数组)最后位置扩容源码分析:什么时候需要扩容,见上图,添加方法中判断的(如果当前数组数据数量等于数组的大小,就扩容)。扩容算法(方法分析)︰ 数组的默认扩容大小,在原来的基础上增加一半使用Arrays.copyof();方法对数组进行扩容,将数组以前的旧数据复制到新的数组中。扩容的原创 2022-03-10 19:19:07 · 159 阅读 · 0 评论