一、共同点
它们都是List实现了的子类
二、区别
- ArrayList是动态数组结构,LinkedList是链表结构
- ArrayList有个明显的缺点,就是当容量接近满值的时候,会进行扩容,JDK默认扩容为1.5,那么数据量极大时,就会造成内存空间的大量浪费。 而LinkedList用到多少就申请多少内存
- ArrayList的随机访问速度非常快,但是指定位置添加、删除操作时需要将后续元素全部顺移。而LinkedList则恰恰相反
- 链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作
三、如何选择
- 如果频繁在尾部操作,ArrayList和LinkedList都可以
- 如果频繁在任意位置添加、删除操作,选LinkedList
- 如果频繁随机查询操作,选ArrayList
网友评论