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具有扩容机制,因此增删改查就是普通的链表增删改查。

相关推荐
迷渡10 分钟前
用 Rust 重写的 Bun 有 13365 个 unsafe!
开发语言·后端·rust
九皇叔叔13 分钟前
高斯性能分析【第一天】单表执行计划分析
java·数据库·性能分析·执行计划·gauss
苦逼的猿宝15 分钟前
基于springboot的社区团购系统设计(源码+论文)
java·毕业设计·springboot·计算机毕业设计
AI_大白15 分钟前
DeepSeek Function Calling 接入实时行情:从工具定义到多轮查询的完整示例
后端·架构
电魂泡哥16 分钟前
RocketMQ Dledger 集群与 Raft 协议
java·rocketmq·java-rocketmq
行走的蜗牛24 分钟前
【springai】 Model层设计与实现
java·ai编程
认真的薛薛27 分钟前
Linux基础:GitOps发布流程
java·linux·运维
鱼鳞_27 分钟前
苍穹外卖-Day05(Redis)
java·redis
雨落在了我的手上34 分钟前
初识java(九):类和对象(⼀)
java·开发语言