java-浅学LinkedList

java-浅学LinkedList

目录

  • java-浅学LinkedList
    • LinkedList
      • add()和push()方法
      • get()方法
      • remove 、pop、poll移除方法
    • 与ArrayList的区别
      • ArrayList
      • LinkedList

LinkedList

LinkedList 的底层就是一个链表线性结构,链表除了要有一个节点对象外,根据单向链表和双向链表的不同,还有一个或者两个指针。 LinkedList属于双向链表。

  • LinkedList 继承了 AbstractSequentialList 类。
  • LinkedList 实现了 Queue 接口,可作为队列使用。
  • LinkedList 实现了 List 接口,可进行列表的相关操作。
  • LinkedList 实现了 Deque 接口,可作为队列使用。
  • LinkedList 实现了 Cloneable 接口,可实现克隆。
  • LinkedList 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。

add()和push()方法

通过这两种方法均可对LinkedList进行元素添加,但不同点在于add是在链表后面添加一个元素,而push是在链表前面 添加一个元素,这是添加顺序上的区别。

get()方法

  • get(int index):按照下边获取元素
  • getFirst():获取第一个元素
  • getLast():获取最后一个元素

remove 、pop、poll移除方法

  • remove();移除链表中第一个元素;
  • remove(int index):移除链表中指定位置的元素;
  • removeFirst():移除链表中第一个元素,与remove类似;
  • removeLast():移除链表中最后一个元素;
  • boolean remove(Object o):移除链表中指定的元素;
  • boolean removeFirstOccurrence(Object o):移除链表中第一次出现所在位置的元素;
  • boolean removeLastOccurrence(Object o):移除链表中最后一次出现所在位置的元素;
  • pop():与removeFirst一样,实际上它就是removeFirst;
  • poll():查询并移除第一个元素;

与ArrayList的区别

在生产开发中我们更多的是使用ArrayList,ArrayList与LinkedList的区别如下:

ArrayList

  • 基于数组,需要连续内存
  • 随机访问快(指根据下标访问)
  • 尾部插入,删除性能可以,其他部分的插入和删除因为会移动数据,导致性能较低
  • 可以利用cpu缓存,局部性原理

LinkedList

  • 基于双向链表,无需连续内存
  • 随机访问慢(因为要沿着链表进行遍历搜索)
  • 头尾插入删除的性能高,中间的插入删除性能不如ArrayList,因为查找消耗了大量的时间
  • 占用内存多(因为采用的是链表结构,需要创建两个指针和一个节点)

你可能感兴趣的:(Java,java,链表,数据结构)