ArrayList 和LinkedList的区别
平时还真没有去看过ArrayList和LinkedList的源码, 了解过一点数据结构制单ArrayList分配的内存空间是连续的在做链表的遍历时效率更高,而LinkedList的插入删除操作效率更高, 分配的内存空间是不连续.
下面我们先google一下看看别人怎么说:
查询:ArrayList的时间复杂度时O(1)而LinkedListd的时间复杂度是O(n)。造成这种差异的原因是它们的内部结构决定的。ArrayList是用数组实现的,在做查询操作的时候利用下表就能找到对应的元素,而LinkedList的底层实现是双向链表在查询的时候每次都会遍历整个链表。
删除、插入:人家写的明明白白在做删除操作的时候LinkedList的时间复杂度是O(1)只用改变指针指向的相邻的两个node, 而ArryaList最会的情况是O(n)删除的元素位于第一个的时候,在末尾的时间复杂的度是O(1),ArrayList在删除的时候会遍历整个list。
内存占用:LinkedList的消耗更高,不仅要储存元素还有下标和相邻的节点。
贴代码时间: