扫码关注微信公众号
回复“面试手册”,获取本站PDF版
回复“简历”,获取高质量简历模板
回复“加群”,加入程序员交流群
回复“电子书”,获取程序员类电子书
- 是否线程安全:
ArrayList
和LinkedList
都是不保证线程安全的 - 底层实现:
ArrayList
的底层实现是数组,LinkedList
的底层是双向链表。 - 内存占用:
ArrayList
会存在一定的空间浪费,因为每次扩容都是之前的1.5倍,而LinkedList
中的每个元素要存放直接后继和直接前驱以及数据,所以对于每个元素的存储都要比ArrayList
花费更多的空间。 - 应用场景:
ArrayList
的底层数据结构是数组,所以在插入和删除元素时的时间复杂度都会收到位置的影响,平均时间复杂度为o(n),在读取元素的时候可以根据下标直接查找到元素,不受位置的影响,平均时间复杂度为o(1),所以ArrayList
更加适用于多读,少增删的场景。LinkedList
的底层数据结构是双向链表,所以插入和删除元素不受位置的影响,平均时间复杂度为o(1),如果是在指定位置插入则是o(n),因为在插入之前需要先找到该位置,读取元素的平均时间复杂度为o(n)。所以LinkedList
更加适用于多增删,少读写的场景
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版