1. 底层数据结构
-
ArrayList 是动态数组的数据结构实现。
-
LinkedList 是双向链表的服务器托管网数据结构实现。
2. 操作数据效率
-
ArrayList按照下标查询的时间复杂度O(1)【内存是连续的,根据寻址公式】, LinkedList不支持下标查询。
-
查找(未知索引): ArrayList需要遍历,链表也需要链表,时间复杂度都是O(n)。
-
新增和删除
-
ArrayList尾部插入和删除,时间复杂度是O(1);其他部分增删需要挪动数组,时间复杂度是O(n)。
-
LinkedList头尾节点增删时间复杂度是O(1),其他都需要遍历链表,时间复杂度是O(n)。
-
3. 内存空间占用
-
ArrayList底层是数组,内存连续,节省内存。
-
LinkedList 是双向链表需要存储数据,和两个指针,更占用内存。
4. 线程安全
-
ArrayList和LinkedList都不是线程安全的。
-
如果需要保证线程安全,有两种方案:
-
在方法内使用,局部变量则是线程安全的。
-
使用线程安全的ArrayList和LinkedList。
-
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 51-2 万字长文,深度解读端到端自动驾驶的挑战和前沿
去年初,我曾打算撰写一篇关于端到端自动驾驶的文章,发现大模型在自动驾驶领域的尝试案例并不多。遂把议题扩散了一点,即从大模型开始,逐渐向自动驾驶垂直领域靠近,最后落地到端到端。这样需要阐述的内容就变成LLM基础模型、LLM+自动驾驶以及端到端自动驾驶核心内容三部…