目录

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) ,因为需要先移动到指定位置再插入。

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
zeijiershuai1 小时前
Java单元测试、Junit、断言、单元测试常见注解、单元测试Maven依赖范围、Maven常见问题解决方法
java·junit·单元测试·maven
Warren982 小时前
十分钟学会Git
java·ide·笔记·git·gitee
WispX8883 小时前
【JVM】GC 常见问题
java·jvm·算法
极客先躯5 小时前
高级java每日一道面试题-2025年3月05日-微服务篇[Eureka篇]-Eureka在微服务架构中的角色?
java·微服务·架构·服务注册·健康检查·架构服务发现
北漂老男孩6 小时前
IntelliJ IDEA 调试技巧指南
java·ide·intellij-idea
八股文领域大手子7 小时前
Leetcode32 最长有效括号深度解析
java·数据库·redis·sql·mysql
上官美丽7 小时前
Springboot中的@ConditionalOnBean注解:使用指南与最佳实践
java·spring boot·mybatis
Another Iso8 小时前
Windows安装Apache Maven 3.9.9
java·maven
鹏神丶明月天8 小时前
mybatis_plus的乐观锁
java·开发语言·数据库
fantasy_48 小时前
Java数据类型 Arrays VS ArraysList VS LikedList 解析
java