集合框架 — LinkedList
一、LinkedList特点
- 相比于ArrayList,增删快,因为是直接改变链表指向关系
- 查询慢,需要从头根据链表向下查
二、实现结构
- LinkedList 也是 List接口的实现类,区别于 ArrayList,LinkedList底层结构是双向链表
- 每个节点用内部类
Node
表示,通过prev
和next
分别指向上一个节点和下一个节点,链表只有一个节点时,prev、next为null

- 链表节点底层结构:
private static class Node<E> {
E item; // 内容
Node<E> next; // 指向下一个节点
Node<E> prev; // 指向上一个节点
Node(Node<E> prev, E element, Node<E> next) {
...
}
}
三、LinkedList的使用
1、添加方法
add(E e)
:链表尾部插入一个元素(就是调addLast() 方法)addLast(E e)
:链表尾部插入一个元素addFirst(E e)
:链表头部插入一个元素add(int index, E element)
:指定位置插入一个元素
2、删除方法
remove()
:删除链表第一个元素(同removeFirst())removeLast()
:删除链表最后一个元素removeFirst()
:删除链表第一个元素remove(int index)
:删除链表指定位置元素remove(Object o)
:删除链表中指定元素
3、获取元素
getFirst()
:获取链表第一个元素getLast()
:获取链表最后一个元素get(int index)
:获取指定位置元素
四、链表遍历方法
推荐 foreach 和 迭代器
- 普通for循环遍历,会一直去调
get()
方法,而链表get()
是从头开始查找,导致效率很低