LinkedList源码分析

众所周知,LinkedList的底层是使用链表来存储实际的数据的,本文来探讨LinkedList的底层源码

LinkedList中的Node类

ini 复制代码
    private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;

        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    }

以上是存储数据的核心节点,非常普通的双向链表节点

LinkedList中的核心数据

ini 复制代码
transient int size = 0;  
  
transient Node<E> first;  

transient Node<E> last;

由上面的代码可知,LinkedList是一个具有头节点和尾节点的链表。

而且这些数据在Java默认的序列化中都不参与。

LinkedList初始化

空参构造

csharp 复制代码
public LinkedList() {  
}

LinkedList空参构造什么也没做。

通过集合构造

scss 复制代码
    public LinkedList(Collection<? extends E> c) {
        this();
        addAll(c);
    }

先调用空参构造,再调用addAll()添加数据。

增删改查

LinkedList不像ArrayList具有扩容机制,因此增删改查就是普通的链表增删改查。

相关推荐
IT_陈寒1 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰2 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
用户8356290780512 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
小满zs2 小时前
Go语言第二章(小无相功)
后端·go
用户8356290780512 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k3 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生3 小时前
Xiuno BBS X版 用户封禁系统
后端
karry_k3 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
ServBay3 小时前
不会写代码也能建站?AI 时代,非技术创始人如何从零搭建自己的 Web 项目
后端·mcp