首页 - 常识问答 - 正文

好奇JAVA开发LinkedList插入数据真的比ArrayList快吗?

日期:2023-4-80 次浏览

1

这个没啥好不好奇的。数据结构决定了的。

链表插入数据就是将节点加入到尾部,算法时间复杂度是O(1),相当于插入数据的时间开销是一个常量。

ArrayList是基于数组的实现,插入数据时要看数组的容量够不够,容量足够的话和链表插入性能差不多,但如果不够就需要扩容,扩容就相当于建立一个新数组,把原来的数据复制过去,这个开销就比较大了,

所以在使用ArrayList时,如果指定了一个合适的Capacity,在使用时可以不扩容或者减少扩容次数,就可以提高程序的性能。

2

首先你得知道arraylist底层是依赖与数组,linklist底层依赖与链表。

然后你去翻翻数据结构这边书,你就知道了!

3

必须的,一个是直接修改链表,一个需要挪动数组。

4

Arraylist是数组实现的

1 除了插入尾部,都要把后边的数据往后边挪动。

2 扩容的时候还要全部拷贝到新数组中

Linkedlist是链表,无上边两个缺点,

不过查找的时候要从头next到去找,也可以从尾部向前找,总之查询没这么快。