LInkedList相关知识点


来点超详细的介绍 点我走起
我要来点干货点我走起

























LinkedList简介:

  • LinkedList相关知识点:
  • LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
  • LinkedList 实现 List 接口,能对它进行队列操作。
  • LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。
  • LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。
  • LinkedList 实现java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。
  • LinkedList 是非同步的

LinkedLIst总结:

  1. LinkedList 实际上是通过双向链表去实现的。
    它包含一个非常重要的内部类:Entry。Entry是双向链表节点所对应的数据结构,它包括的属性有:当前节点所包含的值,上一个节点,下一个节点。
  2. LinkedList的实现方式中可以发现,它不存在LinkedList容量不足的问题。
  3. LinkedList的克隆函数,即是将全部元素克隆到一个新的LinkedList对象中。
  4. LinkedList实现java.io.Serializable。当写入到输出流时,先写入“容量”,再依次写入“每一个节点保护的值”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。
  5. 由于LinkedList实现了Deque,而Deque接口定义了在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。
			第一个元素(头部)                最后一个元素(尾部)
	        抛出异常        特殊值            抛出异常        	特殊值
	插入    addFirst(e)    offerFirst(e)    addLast(e)         offerLast(e)
	移除    removeFirst()  pollFirst()      removeLast()       pollLast()
	检查    getFirst()     peekFirst()      getLast()          peekLast()
  1. LinkedList可以作为FIFO(先进先出)的队列,作为FIFO的队列时,下表的方法等价:
队列方法       等效方法
add(e)        addLast(e)
offer(e)      offerLast(e)
remove()      removeFirst()
poll()        pollFirst()
element()     getFirst()
peek()        peekFirst()
  1. LinkedList可以作为LIFO(后进先出)的栈,作为LIFO的栈时,下表的方法等价:
栈方法        等效方法
push(e)      addFirst(e)
pop()        removeFirst()
peek()       peekFirst()

常用方法(基于JDK源码分析):

添加元素:
  1. linkedList.add();

public boolean add(E e); 将指定的元素追加到此列表的末尾。

  1. linkedList.add(int index, E element);

public void add(int index, E element)
将指定元素插入此列表中的 指定位置 。将当前位置的元素(如果有)和任何后续元素向右移动(将其添加到其索引中)。

  1. linkedList.addAll(int index, Collection <?extends E > c)

public boolean addAll(int index, Collection <?extends E > c)
从指定位置开始,将指定集合中的所有元素插入此列表。将当前位置的元素(如果有)和任何后续元素向右移动(增加其索引)。新元素将按照指定集合的​​迭代器返回的顺序出现在列表中。

  1. linkedList.clear();

public void clear()
从此列表中删除所有元素。此调用返回后,列表将为空。

  1. linkedList.remove()

public E remove()
检索并删除此列表的头部(第一个元素)。

  1. linkedList.remove(int index);

public E remove(int index)
删除此列表中指定位置的元素。将任何后续元素向左移位(从索引中减去一个)。返回从列表中删除的元素。

  1. linkedList.peek();

public E peek()
检索但不删除此列表的头部(第一个元素)。

  1. linkedList.element();

public E element()
检索但不删除此列表的头部(第一个元素)。

  1. linkedList.poll();

public E poll()
检索并删除此列表的头部(第一个元素)。

  1. linkedList.set(int index, E element);

public E set(int index, E element)
用指定的元素替换此列表中指定位置的元素。

  1. linkedList.indexOf(Object o);

public int indexOf(Object o)
返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。更正式地说,返回的指数最低i,从而 Objects.equals(o, get(i)),或-1,如果没有这样的指标。

  1. linkedList.size();

public int size() 返回此列表中的元素数。

返回List

返回Java目录集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值