ArrayList和LinkedList区别

 ArrayList和LinkedList比较

1.增加add
(1)ArrayListadd(int index,E e)方法添加的话需要把index以及其后面的元素移动一位,所以时间复杂度是On;
但是如果是add(E e)方法的话,直接在数组尾部添加一个元素,时间复杂度是O1,但是为什么遍历数组不消耗时间复杂度呢,因为ArrList的原理是数组,也就是内存中一片连续的空间,所以可以根据索引index,原理就是数组首地址加偏移量,直接计算出index位元素在内存中的位置
(2)LinkedList (int index,E e)方法添加的话,因为Linkedlist原理是链表,实质是双向循环链表,内存中不是一段连续的空间,所以获取index时,只能从首元素依次获取到index位置,时间复杂度是On,添加的话,只需要改变链表指针指向的位置,所以时间复杂度是O1,综上所得,时间复杂度是On,对于其特有的方法addFirst和addLast,其时间复杂度是O1;

所以,对于添加操作来说,LinkedList要优于ArrayList

2.删除Remove
原理与add方法类似,LinkedList要优于ArrayList

3.修改set方法
(1)对于ArrayList来说,只需要根据根据索引,获取需要需要修改的元素,然后修改该元素,时间复杂度是O1
(2)对于LinkedList来说,只有从首元素循环遍历到index位置,才可以进行修改,所以时间复杂度是On

ArrayList要优于LinkedList

4.查询get方法
原理与set方法类似,ArrayList要优于LinkedList

你可能感兴趣的:(ArrayList和LinkedList区别)