- 博客(10)
- 收藏
- 关注
原创 LinkedList源码分析(五)
## LinkedList源码分析(五) /** * 更新元素中指定下标元素 * * @param index 元素下标 * @param e 修改的元素 * @return 返回修改前的数据 */ public E set(int index, E e) { checkIndex(index); Node<E> n = node(index); E oldValue =
2021-02-21 12:25:50
37
原创 LinkedList源码分析(四)
## LinkedList源码分析(四) /** * 添加一个符合当前LinkedList泛型约束数据类型一致的元素带结婚中 * * @param e 符合LinkedList 要求的元素 * @return 添加成功返回true */ public boolean add(E e) { // 最后一个节点位置,当前元素保证成Node节点之后的存储位置 Node<E> l = last;
2021-02-21 12:24:20
47
原创 LinkedList源码分析(三)
## LinkedList源码分析(三) public class LinkedList<E> { /** * 有效元素个数 */ private int size = 0; /** * 第一个Node节点首地址 */ private Node<E> first; /** * 最后一个Node节点的首地址 */ private Node<E> last;
2021-02-21 12:22:52
63
原创 LinkedList源码分析(二)
## LinkedList源码分析(二) /** * 检查下标是否正常 * * @param index */ private void checkIndex(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException("下标异常" + index); } } /**
2021-02-21 12:20:33
51
原创 LinkedList源码分析(一)
## LinkedList源码分析(一) /* LinkedList双向链表特征: 1. 存储数据,非连续空间。 2. 数据之间通过引用连接,方便遍历和使用 3. 遍历效率较低,数据非连续空间存储,需要通过引用跳转过程来完成。 4. 删除插入操作效率高,但是注意地址的转移和保存问题。 5. LinkedList链表当中的操作其实大部分都是和C语言指针一个概念 增删快: 增删快是每一个元素通过引用连接,添加元素或者删除元素,重新组建连接引用即可,效
2021-02-21 12:17:38
51
原创 ArrayList源码分析(五)
## ArrayList源码分析(五) /** * 获取当前集合中有效元素个数 * * @return 有效元素个数 */ public int size() { return size; } /** * 获取当前集合的子集合,截取范围是start <= n < end * * @param start start <= end 不得小于0 * @param end e
2021-02-21 11:58:25
63
原创 ArrayList源码分析(四)
## ArrayList源码分析(四) /** * 删除指定元素 * @param obj 删除指定的元素 * @return 删除成功返回true */ public boolean remove(Object obj) { int index = indexOf(obj); return null != remove(index); } /** * 删除指定下标元素 * @param
2021-02-21 11:57:40
41
原创 ArrayList源码分析(三)
## ArrayList源码分析(三) /** * 增加方法 */ /** * 添加元素到当前集合的末尾 * * @param e 要求是符合泛型约束的指定数据类型 * @return 添加成功返回true,否则返回false */ public boolean add(E e) { return add(size, e); } /** * 在底层数组的指定下标位置保存对应的元素
2021-02-21 11:55:47
38
原创 ArrayList源码分析(二)
## ArrayList源码分析(二) public class ArrayList<E> { /** * 准备一个底层数组,用于存储数据内容 */ private Object[] elements; /** * 初始化默认容量 */ private static final int DEFAULT_CAPACITY = 10; /** * 最大数组容量, -8是为了腾出一定的空间,保存数组的必要内容
2021-02-21 11:53:27
47
原创 ArrayList源码分析(一)
*** ArrayList源码分析(一) ** ArrayList 可变长数组 概括: ArrayList底层采用数组形式进行数据保存和处理。底层数组中为Object类型,可以存储任意类型数据。存储具体 数据类型通过创建ArrayList类对象约束,因为所有的添加操作都是通过该add和addAll方法完成的。 可变长数组是通过grow方法来进行底层数组容量扩容操作。扩容比例大约是原数组的1.5倍 ArrayList特征: 增
2021-02-21 11:47:04
62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人