LinkedList-常用方法以及双向链表的理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LinkedList-常⽤⽅法以及双向链表的理解
链表
链表是⼀种物理存储单元上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由⼀系列结点(链表中每⼀个元素称为结点)组成,结点可以在运⾏时动态⽣成。
每个结点包括两个部分:⼀个是存储数据元素的数据域,另⼀个是存储下⼀个结点地
址的指针域。
由于不必须按顺序存储,链表在插⼊的时候可以达到O(1)的复杂度。
优点:
插⼊数据快
不需要预先知道数据⼤⼩
可以充分利⽤计算机内存空间
缺点:
随机读取速度慢,寻址花时间
空间开销⽐较⼤,因为增加了结点的指针域
双向链表⽰意图:
操作逻辑:新头部元素的nest指向就头部元素的地址,旧头部元素的prev指向新头部元素的地址
操作逻辑:新尾部元素的prev指向旧尾部元素的地址,旧尾部元素的nest指向新尾部元素的地址
操作逻辑:插⼊元素的prev指向前⾯元素的地址,插⼊元素的nest指向后⾯元素的地址
LinkedList
Java中的linkedList底层正是使⽤了双向链表结构。
LinkedList 继承了 AbstractSequentialList 类,实现了 List 接⼝,此外也实现了Queue、Cloneable、Serializable 等接⼝。
⽅法描述
public boolean add(E e)链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public void add(int index, E element)向指定位置插⼊元素。
public boolean addAll(Collection c)将⼀个集合的所有元素添加到链表后⾯,返回是否成功,成功为 true,失败为 false。
public boolean addAll(int index, Collection c)将⼀个集合的所有元素添加到链表的指定位置后⾯,返回是否成功,成功为 true,失败为 false。
public void addFirst(E e)元素添加到头部。
public void addLast(E e)元素添加到尾部。
public boolean offer(E e)向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public boolean offerFirst(E e)头部插⼊元素,返回是否成功,成功为 true,失败为 false。
public boolean offerLast(E e)尾部插⼊元素,返回是否成功,成功为 true,失败为 false。
public void clear()清空链表。
public E removeFirst()删除并返回第⼀个元素。
public E removeLast()删除并返回最后⼀个元素。
public boolean remove(Object o)删除某⼀元素,返回是否成功,成功为 true,失败为 false。
public E remove(int index)删除指定位置的元素。
public E poll()删除并返回第⼀个元素。
public E remove()删除并返回第⼀个元素。
public boolean contains(Object o)判断是否含有某⼀元素。
public E get(int index)返回指定位置的元素。
public E getFirst()返回第⼀个元素。
public E getLast()返回最后⼀个元素。
public int indexOf(Object o)查找指定元素从前往后第⼀次出现的索引。
public int lastIndexOf(Object o)查找指定元素最后⼀次出现的索引。
public E peek()返回第⼀个元素。
public E element()返回第⼀个元素。
public E peekFirst()返回头部元素。
public E peekLast()返回尾部元素。
public E set(int index, E element)设置指定位置的元素。
public Object clone()克隆该列表。
public Iterator descendingIterator()返回倒序迭代器。
public int size()返回链表元素个数。
public ListIterator listIterator(int index)返回从指定位置开始到末尾的迭代器。
public Object[] toArray()返回⼀个由链表元素组成的数组。
public T[] toArray(T[] a)返回⼀个由链表元素转换类型⽽成的数组。