前言
LinkedList底层是基于双端链表实现的,也就是说它具有指向其前驱与后继的引用,而且,在插入与删除数据时效率极高
至于它继承谁和实现什么接口,直接看源码
public class LinkedList
extends AbstractSequentialList
implements List, Deque , Cloneable, java.io.Serializable
和ArrayList一样,从源码分析其add、get以及remove方法
add方法
首先通过MyEclipse进入LinkedList的源码
找到add()方法
找到linkLast()方法
以上便是add方法的源码,主要通过改变链表的前驱及后继引用来完成插入,可想而知,使用链表,使插入数据的速度异常快,相对顺序查找
get方法
找到get方法
找到checkElementIndex(int index)方法
找到isElementIndex(index)方法
找到node(int index)方法
linkedlist在查找时的效率非常低,就是因为它是从头或从尾部遍历链表,所以当数据量大时,造成效率低下
remove方法
找到remove方法
|
|
找到unlink(node(index))方法
至此,简单把上面三个方法的源码简单过了一遍
当然,还有一点不得不提的是LinkedList可以当做stack(栈),queue(队列)处理,因为它是双端链表,另外,在遍历时,有index < (size >> 1),即判断index与size/2比较,这样可以缩小范围,选择是从前遍历还是从后遍历,从而大大增加查找效率