完整教程:ArrayList和LinkedList的区别是什么?
什么?就是ArrayList和LinkedList的区别
底层的数据结构
- ArrayList底层是使用动态数组实现的
- 采用双向链表建立的就是LinkedList底层
操作素材的效率
ArrayList按照索引查询的时候,时间复杂度是O(1),LinkedList不支持下标查询
在不知道索引的情况下查询,这两个都是O(n)
新增和删除
- O(n)就是ArrayList在尾部插入或删除,时间复杂度是O(1),其他都
- LinkedList在头尾进行运行的时候时间复杂度是O(1),其他是O(n)
内存的占用
- ArrayList底层是数组,内存连续更加节省内存
- LinkedList底层是双向链表,需要存数据和2个指针,更加占用内存
线程安全
ArrayList和LinkedList都不是线程安全的
解决方案
- 尽量在办法内使用,局部变量是线程安全的
- 使用线程安全的ArrayList和LinkedList
浙公网安备 33010602011771号