1.线程安全:ArrayList和LinkedList都是不同步的,所以都是线程不安全的。
2.底层数据结构:ArrayList底层采用的是object数据,而LinkedList底层采用的是双向链表。(JDK1.6之前采用的是双向循环链表,JDK1.7取消了循环。)
3.插入删除是否受元素位置的影响:ArrayList采用的是数组,所以它在插入或者删除元素的时候,要移动元素,受元素位置的影响,时间复杂度是O(n)。LinkedList在插入或者删除的时候不需要移动大量元素,所以不受元素位置的影响,时间复杂度是O(1)。
4.是否支持快速访问:ArrayList可以根据数组下标进行快速随机访问,而LinkedList是不支持快速随机访问。
!!!!!5.内存空间占用:ArrayList他的内存空间浪费主要体现在list列表结尾会留出一定的空间,而LinedList空间浪费主要体现在前驱指针和后继指针。