LinkedList

LinkedList 双向链表

 

线程不安全

实现Dueue接口,提供了更多方法 offer() peek() poll()等

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

使用Node节点存储链表信息

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

链表的头指针、尾指针

final Node<E> next = x.next;
final Node<E> prev = x.prev;

区别(链表和数组的区别):LinkedList基于双向链表实现,ArrayList基于动态数组实现。

数组:支持随机访问(get、set强);插入删除操作代价高,需要移动元素

链表:不支持随机访问(get、set弱);插入删除操作简单,只需要通过改变指针

 

双向链表:每个节点的头指针指向前一个节点(头节点除外)、每个节点的尾指针指向后一个节点(尾节点除外)

双向循环链表:双向链表的基础上,头节点的头指针指向尾节点,尾节点的尾指针指向头节点

 

posted @ 2022-03-22 17:01  与长安故里  阅读(17)  评论(0编辑  收藏  举报