ArrayList 和 linkedList 区别?

1.是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;

2.底层数据结构: Arraylist 底层使用的是 Object 数组;LinkedList 底层使用的是双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7 取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!)

3.插入和删除是否受元素位置的影响:

--ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行 add(E e)方法的时候, ArrayList 会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是 O(1)。但是如果要在指定位置 i 插入和删除元素的话(add(int index, E element))时间复杂度就为 O(n-i)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。

--LinkedList 采用链表存储,所以,如果是在头尾插入或者删除元素不受元素位置的影响(add(E e)、addFirst(E e)、addLast(E e)、removeFirst() 、 removeLast()),近似 O(1),如果是要在指定位置 i 插入和删除元素的话(add(int index, E element),remove(Object o)) 时间复杂度近似为 O(n) ,因为需要先移动到指定位置再插入。

相关推荐
ch.ju1 分钟前
Java程序设计(第3版)第二章——关系运算符
java
Tirzano4 分钟前
springsession全能序列化方案
java·开发语言
我登哥MVP8 分钟前
【SpringMVC笔记】 - 2 - @RequestMapping
java·spring boot·spring·servlet·tomcat·intellij-idea·springmvc
殷紫川13 分钟前
深度剖析:Java 并发三大量难题 —— 死锁、活锁、饥饿全解
java
云烟成雨TD21 分钟前
Spring AI Alibaba 1.x 系列【14】ReactAgent 工具执行异常处理
java·人工智能·spring
凯尔萨厮25 分钟前
创建Web多模块项目(Maven管理)
java·maven
香香甜甜的辣椒炒肉33 分钟前
Spring JDBC 万能模板
java·后端·spring
liaowenxiong35 分钟前
实现类和接口的关系
java
编程迪38 分钟前
基于Java和uniapp开发的名片交换分享系统企业名片管理软件个人电子名片小程序源码
java·uni-app·电子名片·名片小程序·名片软件源码
开开心心就好40 分钟前
经典塔防游戏移植移动端随时畅玩
java·前端·科技·游戏·edge·django·pdf