ArrayList和LinkedList区别

ArrayList和LinkedList都是经常使用的集合工具,但真正原理却千差万别。
本质区别就是: ArrayList是数组结构,LinkedList是链表结构。
基于本质的区别,可以总结ArrayList和LinkedList的特点和不同点了。
1、增加元素到列表末尾时,当元素个数超过数组限制,ArrayList要进行数组扩容,这对性能有一定影响。而本质是链表的LinkedList则不需要进行扩容。
2、增加元素到任意位置时,本质是数组的ArrayList需要移动后面的元素重新排列,开销也会随着添加元素位置越靠前而越大,而本质是链表的LinkedList则只要改变前后的指向就行,性能开销远远小于ArrayList.
3、删除任意元素同上。
4、遍历性能对比:
构造一个拥有100万数据的ArrayList和等价的LinkedList,使用以上代码进行测试,测试结果的相对耗时如下表所示:


image.png

LinkedList因为是链表实现,所以在迭代遍历中占有很明显的优势,而在通过数组下标的遍历中,链表需要通过指针计算出下标来遍历,所以性能非常慢,而ArrayList因为是数组实现,通过数组下标遍历速度最快。

参考资料: https://www.cnblogs.com/sierrajuan/p/3639353.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容