好奇JAVA开发LinkedList插入数据真的比ArrayList快吗?
日期:2023-4-80 次浏览
1
这个没啥好不好奇的。数据结构决定了的。
链表插入数据就是将节点加入到尾部,算法时间复杂度是O(1),相当于插入数据的时间开销是一个常量。
ArrayList是基于数组的实现,插入数据时要看数组的容量够不够,容量足够的话和链表插入性能差不多,但如果不够就需要扩容,扩容就相当于建立一个新数组,把原来的数据复制过去,这个开销就比较大了,
所以在使用ArrayList时,如果指定了一个合适的Capacity,在使用时可以不扩容或者减少扩容次数,就可以提高程序的性能。
2
首先你得知道arraylist底层是依赖与数组,linklist底层依赖与链表。
然后你去翻翻数据结构这边书,你就知道了!
3
必须的,一个是直接修改链表,一个需要挪动数组。
4
Arraylist是数组实现的
1 除了插入尾部,都要把后边的数据往后边挪动。
2 扩容的时候还要全部拷贝到新数组中
Linkedlist是链表,无上边两个缺点,
不过查找的时候要从头next到去找,也可以从尾部向前找,总之查询没这么快。