美文网首页
关于LinkedList

关于LinkedList

作者: 瓢鳍小虾虎 | 来源:发表于2021-08-03 12:43 被阅读0次

LinkedList实现了List接口与Deque接口。Deque解开意思是“Double End Queue”(双端队列),这个队列定义了2端可以插入或者删除元素,可以实现为无容量限制的队列,也可以实现为有容量限制的队列,LinkedList采用的有容量限制的实现,最大容量为Integer.MAX_VALUE。

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
    //长度
    transient int size = 0;
    //指向头结点
    transient Node<E> first;
    //指向尾结点
    transient Node<E> last;

  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;
    }
  }
}

Node是一个静态内部类。Node代表链表基本数据元素,封装了数据本身和两端指针。

有限容量的链表实现Node定位有段代码比通常的思路好一些,通过判断index靠近头还是尾,再遍历:

Node<E> node(int index) {
    // assert isElementIndex(index);
    if (index < (size >> 1)) {
        Node<E> x = first;
        for (int i = 0; i < index; i++)
            x = x.next;
        return x;
    } else {
        Node<E> x = last;
        for (int i = size - 1; i > index; i--)
            x = x.prev;
        return x;
    }
}

比较LinkedList和ArrayList
相同点:

  1. 接口实现:都实现了List接口,都是线性列表的实现
  2. 线程安全:都是线程不安全的

不同点:

  1. 底层实现,ArrayList是数组,而LinkedList是双向链表
  2. 接口实现,ArrayList实现了RandomAccess支持随机节点快速访问,LinkedList实现了Deque,可以作为队列使用。
  3. 性能:新增、删除元素时ArrayList需要使用到拷贝原数组,而LinkedList只需移动指针;查找元素 ArrayList支持随机元素访问,而LinkedList只能一个节点的去遍历。简要来说,ArrayList适合查找,LinkedList适合增删。(如果ArrayList增删只考虑从末尾操作,那么就无需移动数组,速度反而会异常的快。)

参考文章:
Java容器之LinkedList

相关文章

  • 关于LinkedList

    概念及特性 底层数据实现是双向链表数据结构,是无序列表,可以放相同元素 双向链表为链表结构的子数据结构,每个节点有...

  • 关于LinkedList

    LinkedList实现了List接口与Deque接口。Deque解开意思是“Double End Queue”(...

  • [转]深入理解HashMap

    初识HashMap 关于List,ArrayList、LinkedList,CopyOnWriteArrayLis...

  • JavaSE Day16 集合

    一、 ArrayList VS LinkedList 1. 什么是 LinkedList? LinkedList ...

  • LinkedList简介

    LinkedList简介 LinkedList基于双向链表实现 LinkedList相对于Arraylist来说,...

  • java 集合 2 - LinkedList

    java 集合 2 - LinkedList 参考文章:图解集合2:LinkedList LinkedList是基...

  • LinkedList

    eg:LinkedList link = new LinkedList();

  • LinkedList源码解析 基于jdk1.8

    LinkedList源码解析 LinkedList继承结构开始分析 LinkedList是继承于AbstractS...

  • LinkedList源码分析

    大纲 LinkedList实现原理 LinkedList源码分析 1. LinkedList实现原理 Linked...

  • LinkedList源码分析

    LinkedList介绍 JangGwa带你再熟悉一下LinkedList,首先简单介绍下LinkedList。 ...

网友评论

      本文标题:关于LinkedList

      本文链接:https://www.haomeiwen.com/subject/oizsvltx.html