目录
如想了解有关 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。