美文网首页
3:LinkedList源码阅读

3:LinkedList源码阅读

作者: Han琪 | 来源:发表于2018-02-27 15:27 被阅读0次

首先看看LinkedList与Collection的关系:

image

LinkedList的继承关系如下:
首先看看LinkedList与Collection的关系:

java.lang.Object
  ↳     java.util.AbstractCollection<E>
        ↳     java.util.AbstractList<E>
              ↳     java.util.AbstractSequentialList<E>
                    ↳     java.util.LinkedList<E>

public class LinkedList<E>
   extends AbstractSequentialList<E>
   implements List<E>, Deque<E>, Cloneable, java.io.Serializable {}

inkedList是一个继承与AbatractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList实现了List接口,能对它进行队列操作。
LinkedList实现了Deque接口,即能将LinkedList当作双端队列使用。
LinkedList实现了java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。
LinkedList是非同步的。

LinkedList就是一个双向链表,基本数据结构如下:

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

总结一下:

1). LinkedList是通过双向链表去实现的。
2). 从LinkedList的实现方式中可以看出,它不存在容量不足的问题,因为是链表。
3). LinkedList实现java.io.Serializable的方式。当写入到输出流时,先写入“容量”,再依次写出“每一个元素”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。
4). LinkdedList的克隆函数,即是将全部元素克隆到一个新的LinkedList中。
5). 由于LinkedList实现了Deque,而Deque接口定义了在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。
6). LinkedList可以作为FIFO(先进先出)的队列,作为FIFO的队列时,下标的方法等价:

    队列方法       等效方法  
    add(e)        addLast(e)  
    offer(e)      offerLast(e)  
    remove()      removeFirst()  
    poll()        pollFirst()  
    element()     getFirst()  
    peek()        peekFirst()  

7).LinkedList可以作为LIFO(后进先出)的栈,作为LIFO的栈时,下表的方法等价:

    栈方法        等效方法  
    push(e)      addFirst(e)  
    pop()        removeFirst()  
    peek()       peekFirst()  

相关文章

网友评论

      本文标题:3:LinkedList源码阅读

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