LinkedList

LinkedList

LinkedList 是 Java 集合框架中的一个类,它实现了 List 接口和 Deque 接口,基于双向链表的数据结构。LinkedList 提供了高效的插入和删除操作,适合频繁修改的场景

特点

  1. 基于双向链表:

    • LinkedList 内部使用双向链表来存储元素。

    • 每个节点(Node)包含三个字段:item(存储元素)、next(指向下一个节点)、prev(指向上一个节点)。

    • LinkedList内部维护了两个属性first和last分别指向首节点和尾节点

  2. 有序且允许重复

    • 元素按照插入顺序存储。
    • 允许存储重复的元素
  3. 允许 null 元素

    • LinkedList 可以存储 null 值,且可以存储多个 null
  4. 非线程安全

  5. 高效的插入和删除

    • 在链表头部或尾部插入或删除元素的时间复杂度为 O(1)。
    • 在链表中间插入或删除元素的时间复杂度为 O(n),因为需要遍历链表

常用方法

LinkedList 实现了 List 接口和 Deque 接口,因此支持 List 和 Deque 的所有方法

  1. 添加元素
    • void addFirst(E e):在链表头部插入一个元素。
    • void addLast(E e):在链表尾部插入一个元素
  2. 删除元素
    • E removeFirst():移除并返回链表头部的元素。
    • E removeLast():移除并返回链表尾部的元素
  3. 查询元素
    • E getFirst():返回链表头部的元素。
    • E getLast():返回链表尾部的元素
  4. 队列和双端队列操作
    • boolean offer(E e):在链表尾部插入一个元素(队列操作)。
    • E poll():移除并返回链表头部的元素(队列操作)。
    • E peek():返回链表头部的元素,但不移除(队列操作)。
    • void push(E e):在链表头部插入一个元素(栈操作)。
    • E pop():移除并返回链表头部的元素(栈操作)

底层实现

LinkedList 的底层是一个双向链表,核心字段包括:

  • Node first:指向链表头部的节点。

  • Node last:指向链表尾部的节点。

  • int size:链表中实际存储的元素数量

posted @   QAQ001  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示