ArrayList和LinkedList区别

ArrayList和LinkedList区别
概括: ArrayList是通过动态数组实现的,LinkedList是通过链表实现的

共同点: ArrayList和LinkedList都是实现了list接口的容器类

区别:

  • ArrayList是基于动态数组实现,LinkedList是基于链表实现
  • 对于访问元素来说,ArrayList要优于LinkedList,因为ArrayList通过下标就可以随机访问元素,而LinkedList要挨个遍历
  • 对于添加删除元素来说,LinkedList要优于ArrayList,因为LinkedList底层是链表,添加删除只需要断开在连接就好,而ArrayList要移动元素

性能:

  • LinkedList不支持随机访问
  • ArrayList在结构内部添加删除元素时会造成大量的元素移动
  • ArrayList因为在结构末尾预留一定空间,所以会造成空间浪费,而LinkedList浪费空间体现在其每一个元素都会使用一定的内存空间

使用场景:

  • 当你要进行大量的随机访问时,使用ArrayList
  • 当你要进行大量的新增删除时,使用LinkedList