目录
如想了解有关 ArrayList(顺序表)和LinkedList(链表)的知识,请查阅:
ArrayList | LinkedList | |
int size() | O(1) | O(1) |
boolean add(Long e) | O(1) | O(1) |
void add(Long e,int index) | O(n) | O(n) |
Long get(int index) | O(1) | O(n) |
Long set(int index,Long e) | O(1) | O(n) |
Long remove(int index) | O(n) | O(n) |
boolean remove(Long e) | O(n) | O(n) |
int indexOf(Long e) | O(n) | O(n) |
int lastIndexOf(Long e) | O(n) | O(n) |
boolean comtains(Long e) | O(n) | O(n) |
void clear() | O(1) | O(1) |
boolean isEmpty() | O(1) | O(1) |
不同点 | ArrayList | LinkedList |
存储空间上 | 物理上一定连续 | 逻辑上连续,但物理上不一定连续 |
随机访问 | 支持O(1) ArrayList实现了RandomAccess接口 | 不支持:O(N) |
头插 | 需要搬移元素,效率低O(N) | 只需修改引用的指向,时间复杂度为O(1) |
插入 | 空间不够时需要扩容 | 没有容量的概念 |
应用场景 | 元素高效存储+频繁访问 | 任意位置插入和删除频繁 |
- 在需要使用List时,一般使用ArrayList。
- 当使用栈/队列的结构时,可以考虑使用LinkedList。