Java集合(一):LinkedList
LinkedList底层数据结构是双向链表
LinkedList概述
1、LinkedList是双向链表实现的List
2、LinkedList是非线程安全的
3、LinkedList元素允许为null,允许重复元素
4、LinkedList是基于链表实现的,因此插入删除效率高,查找效率低(虽然有一个加速动作,类似于二分法)
5、LinkedList是基于链表实现的,因此不存在容量不足的问题,所以没有扩容的方法
6、LinkedList还实现了栈和队列的操作方法,因此也可以作为栈、队列和双端队列来使用
内部参数
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
//大小
transient int size = 0;
//头节点
transient Node<E> first;
//尾节点
transient Node<E> last;
//内部类
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
}
由于是链式存储,所以不涉及到扩容
构造方法
//1、空构造
public LinkedList() {
}
//2、带参构造,将传入的集合放在LinkedList里
public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}