ArrayList和LinkedList区别
概括: ArrayList是通过动态数组实现的,LinkedList是通过链表实现的
共同点: ArrayList和LinkedList都是实现了list接口的容器类
区别:
- ArrayList是基于动态数组实现,LinkedList是基于链表实现
- 对于访问元素来说,ArrayList要优于LinkedList,因为ArrayList通过下标就可以随机访问元素,而LinkedList要挨个遍历
- 对于添加删除元素来说,LinkedList要优于ArrayList,因为LinkedList底层是链表,添加删除只需要断开在连接就好,而ArrayList要移动元素
性能:
- LinkedList不支持随机访问
- ArrayList在结构内部添加删除元素时会造成大量的元素移动
- ArrayList因为在结构末尾预留一定空间,所以会造成空间浪费,而LinkedList浪费空间体现在其每一个元素都会使用一定的内存空间
使用场景:
- 当你要进行大量的随机访问时,使用ArrayList
- 当你要进行大量的新增删除时,使用LinkedList