一、ArrayList:底层是一个数组,擅长数据的查找(访问),是一个可改变的数组,当有更多的元素加到ArrayList中时,其大小会自动增长,内部的元素可以直接通过get和set方法访问,因为ArrayList本质上就是一个数组。。
二、LinkedList:底层链表,擅长数据的修改(包括数据添加和删除),在添加和删除元素时比ArrayList有更好的性能,但在get和set方面低于ArrayList,前提是,对比的数据量很大或者是操作很频繁的情况下;反之,对比将失去意义。
三、区别
(1)ArrayList采用数组形式来存储对象的,这种方式将对象放在连续的位置中,所以最大的缺点是插入和删除时很麻烦;
(2)LinkedList采用的是将对象存放在独立的空间中,并且还在每个空间中保存了下一个链接的索引,但它的缺点是查找很 麻烦,要从第一个索引开始;
(3)ArrayList实现了基于动态数组的数据结构,LinkedList是基于链表的数据结构;
(4)对于add和remove来说,LinkedList比ArrayList有优势,因为ArrayList要移动数据。