ArrayList 和 LinkedList
相同点
- 都是List接口的容器类
- 都用于存储一系列对象的引用
- 都可以对元素进行CRUD
不同点
名称 | ArrayList | LinkdeList |
---|---|---|
结构 | 动态数组 | 链表 |
应用 | 查询 | 添加 |
get/set | 快 | 慢(移动指针) |
add/remove | 慢(移动数据) | 快 |
缺点
ArrayList 缺点
- ArrayList: 在内部构成是数组形式 增加一项内容时 有可能导致数组重新分配
但对于 LinkedList: 这个开销是固定的,因为是在内存中分配一个entry然后通过指针指向 - ArrayList: 如果添加或者删除一个内容时,列表中的全部对象都要进行移动.
但对于 LinkedList:添加或者删除一个元素时,开销是固定的 - 在list列表的结尾处预留了一定的容量空间
因为本身的存储结构导致的
LinkedList缺点
不支持高效的随机访问 因为linkedList从开头开始遍历 , 每次随机访问都会重新遍历