从源代码来理解ArrayList和LinkedList差别
理解 源代码 ArrayList 差别 LinkedList
2023-09-14 09:08:54 时间
从源代码理解ArrayList和LinkedList差别
ArrayList
ArrayList默认容量为10,实质是一个数组用于存放元素,size表示ArrayList所包括的元素个数。
ArrayList的3个构造函数,第一个构造函数指定容量。第二个构造函数默觉得一个空数组。第三个构造函数是从集合c转变为Arraylist的数组
add函数中,先确认数组容量够不够,一開始假设默认初始化(也就是调用第二个构造函数),加入元素时grow出来数组容量为10。构造了一个新的数组而且copy原来数组元素的值,然后element[0]赋值。第二次加入元素时由于elementData != EMPTY_ELEMENTDATA且
minCapacity - elementData.length <0所以直接element[1]赋值,并没有扩充容量,仅仅有当满容量时才会扩容。
remove(int)函数,指移走序号为index的元素,numMoved指的是index后面元素个数,System.arraycopy后面的元素往前推一格,最后的元素置null,返回被删除的value
跟上面remove(int)的原理一样.
假设找得到,则返回序号。否则返回-1
LinkedList
LinkedList存放数据採用的是链表形式存放
first是指向首节点。last是指向尾结点
LinkedList有两个构造函数,第二个构造函数中将集合的元素传到链表上
都是採用链表插入数据的方法
都是採用链表删除元素的方法
链表查找元素的方法。
相关文章
- query插件之ajaxForm ajaxSubmit的理解用法
- 从执行上下文角度重新理解.NET(Core)的多线程编程[2]:同步上下文
- 网络编程之快速理解TCP协议一篇就够
- 深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis
- flutter json理解
- ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)
- 关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得
- 【精华文章】深入理解 Java 内存模型
- Vue slot简单理解
- 转:曼弗雷德:要理解内心舞台,人很容易让阴暗面主宰
- 理性看待自动化测试优缺点,说说我对自动化测试的理解
- FPGA-实例化的通俗理解(3-8译码器为例)
- Scratch3.0——助力新进程序员理解程序(十二、画笔)