- 博客(5)
- 收藏
- 关注
原创 [双向链表]双向链表的Java实现
双向链表中,除了一个保存值的 val,还有一个额外引用字段保存前一个节点,一个额外引用字段保存后一个节点。节点结构/** * 双向链表节点 */private class DoubleLinkedNode { /** * 节点 val */ private int val; /** * 前一个节点 */ private DoubleLinkedNode prev; /** * 后一个节点 */ privat
2021-08-16 21:31:33 134
原创 [单向链表]单向链表的Java实现
单链表中,每个节点不仅包含 val,还包含链接到下一个节点的引用字段。节点结构/** * 单链表节点内部类 */ private class SingleLinkedNode { /** * 节点 val */ private int val; /** * 下个节点 */ private SingleLinkedNode next;
2021-08-15 13:41:20 106
原创 结合代码针对 HashSet 添加和扩容源码进行解读
结论ArrayList 底层是 Object 类型的数组transient Object[] elementData;使用无参构造。默认值大小 10,之后每次扩容为原来的 1.5 倍;使用有参构造。默认值为构造大小,之后每次扩容为原来的 1.5 倍;特点可以加入任何值和 null,并且是 1 个或多个;线程不安全,顺序存储,查找、修改和尾部添加和删除执行效率高;非尾部的删除和增加需要移动以保证顺序,效率低。无参构造构造方法/** * Shared empty array
2021-05-30 11:26:11 92
原创 结合代码解读 LinkedList 增删改查相关源码
结论LinkedList 底层由 Node 类组成;LinkedList 类实现了双向链表和双端队列;插入时,默认使用尾插法;特点可以加入任何值和 null,并且是 1 个或多个;线程不安全,没有实现同步。添加和删除效率高(修改指针),查找和修改效率低(需要顺序遍历);成员变量transient int size = 0;/** * Pointer to first node */transient Node<E> first;/** * Pointer
2021-05-28 15:22:11 137
原创 结合代码解读ArrayList 添加和扩容相关源码
结论ArrayList 底层是 Object 类型的数组transient Object[] elementData;使用无参构造。默认值大小 10,之后每次扩容为原来的 1.5 倍;使用有参构造。默认值为构造大小,之后每次扩容为原来的 1.5 倍;特点可以加入任何值和 null,并且是 1 个或多个;线程不安全,顺序存储,查找、修改和尾部添加和删除执行效率高;非尾部的删除和增加需要移动以保证顺序,效率低。无参构造构造方法/** * Shared empty array
2021-05-28 15:14:43 73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人