ArrayList 与 LinkedList有什么区别?
- 因为Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array 获取数据的时间复杂度是 O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。
- 相对于ArrayList,LinkedList插入是更快的。因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。ArrayList在插入数据时还需要更新索引(除了插入数组的尾部)。
- 类似于插入数据,删除数据时,LinkedList也优于ArrayList。
- LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置。
- 如果你的应用经常需要随机访问数据,则考虑使用ArrayList。因为如果需要LinkedList中的第n个元素的时候,你需要从个元素顺序数到第n个数据,然后读取数据。
- 你的应用经常进行插入和删除元素,更少的读取数据,考虑使用LinkedList。因为插入和删除元素不涉及重排数据,所以它要比ArrayList 要快。

猜你喜欢LIKE
相关推荐HOT
更多>>
c++和java的区别是什么?
c++和java的区别是什么?其实从发展的角度来看,java就是从c++语言衍生出来的。也正因如此,二者之间存在着一些必然的联系。下面从java的角度来...详情>>
2022-12-08 14:10:00
javaee是前端还是后端
javaee是前端还是后端?通常情况下javaee是指后端,为什么这么说,是因为javaee的有些方式也属于前端的范畴,就好比jsp的一些东西就是属于前端的...详情>>
2022-11-21 11:57:00
volatile 修饰符的有过什么实践?
简单的说,就是当你写一个 volatile 变量之前,Java 内存模型会插入一个写屏障(write barrier),读一个 volatile 变量之前,会插入一个读屏障(r...详情>>
2022-11-19 15:33:00
AQS对资源的共享方式?
自定义同步器在实现时只需要实现共享资源state的获取与释放方式即可,至于具体线程等待队列的维护(如获取资源失败入队/唤醒出队等),AQS已经在...详情>>
2022-10-24 17:14:00
说一下 HashSet的实现原理?
HashSet中add方法调用的是底层HashMap中的put方法,put方法要判断插入值是否存在,而HashSet的add方法,首先判断元素是否存在,如果存在则插入...详情>>
2022-10-13 16:25:00Java丝瓜视频苹果app下载 问答更多>>
新java前端和后端哪个容易学?
新java开发工程师需要学什么?
新java初学者如何入门?
新java的发展和前景如何?
新java编程入门先学什么?难不难
新java丝瓜视频苹果app下载 出来工资大概多少?
新java工程师是做什么的?
Java面试题库 更多>>
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
final在Java中有什么作用?
如果系统响应变慢,你会怎么排查?
Java中都有哪些引用类型
开班信息
北京校区
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
