ArrayList和Arrayst有何不同,你知道吗?

开发 前端
对于发布和林肯发布来说,它们都是list下面的两个实线类,但有三点不同。底层的实线数据结构不同,随机访问的性能不同,以及插入和删除的性能不同。在随机访问较多、询问较多的场景下,可以选择使用发布。

ArrayList和ArrayList有何不同?大家好,我是磊哥,一位经验丰富的程序员。今天我们来探讨一个常见的面试问题——ArrayList和ArrayList有何不同?

首先需要说明的是,ArrayList和LinkedList都是Java中list接口的实现类。我们可以在代码中找到这个接口,并看到其中有多个实现类,其中之一是ArrayList。这个类的中文意思是“数组列表”,它是一个数组,数组中的元素构成了一个列表。ICOL the list就是列表的意思,好,ok,它们的外观如何?

可以看下图,上面是一个数组,这些数组连在一起就形成了一个ArrayList。下面这个图中的节点通过指针连接在一起,形成了一个 ArrayList。这就是它们的外观。

它们有什么不同呢?它们的不同主要体现在以下三个方面。

·第一点是底层实现不同。ArrayList是基于动态数组实现的,而LinkedList是基于链表实现的。这是它们的不同之处。

·第二点是随机访问的性能不同。 ArrayList从下标为零开始,下标为一,下标为二。当访问下标为二的元素时,可以直接取到下标为三的元素,因此它的时间复杂度是L1。而ArrayLiL则不同。它在进行随机访问时只能从根节点开始,因此时间复杂度为O(n)。因此,在随机访问方面,ArrayLiL的性能不如ArrayList。

·第三点不同是它们的插入和删除性能不同。由于ArrayLiL是动态数组,当删除下标为零的元素时,后面的元素需要向前移动,因为老大不在了,老二代替老大的位置,老三代替老二的位置,后面所有的元素都需要向前移动。因此,除了添加和删除的性能之外,插入和删除的性能也一样。

如果添加元素时添加到了第一个位置,那么其他位置的元素也需要向后移动,原来的第一个位置也需要向后移动。因此,对于添加和删除操作,ArrayLiL的性能也不如ArrayList。

released的速度相对较慢,但对于linkthelist来说则不是如此。如果要删除头结点,只需将其删除即可。这样,后面的所有节点都不会受到影响,因为它们的位置和指针都不会发生变化,只是头节点不见了而已。如果第二个节点不见了,也只需要将其删除,然后将第一个节点的下一个指针指向原来的第三个位置即可。这样做的过程中,只需要修改一个位置。

而对于released来说,则需要将后面的所有元素都向前移动,因此在插入和删除操作上,lincolnlist的性能要优于released。这是它们三者之间的主要区别。可以将它们视为平分秋色的两种实现方式,一个是数组,一个是列表。在随机访问方面,connect更加高效。在删除和添加操作方面,connect和the list的性能都更好,因此两者可以打平。

这篇文章介绍了基本的语法和使用方法,读者可以通过添加方法来创建released,并通过at方法进行添加。当然,也可以使用泛型,以确保添加的元素只能是And。发布的使用方式与发布非常相似,也是一种泛型结构。

发型的定义方式仍然是通过某种方法进行添加的,最后进行打印。为什么?因为它们的方法非常相似,使用度达到了90%。它们都来自于list的基础行为,比如添加,就是通过at实现的。只是在发布和林肯发布下面有不同的实现方式。这就是它们两个技术的使用方式。

简单总结一下,对于发布和林肯发布来说,它们都是list下面的两个实线类,但有三点不同。底层的实线数据结构不同,随机访问的性能不同,以及插入和删除的性能不同。在随机访问较多、询问较多的场景下,可以选择使用发布。如果在添加和删除频率较高的场景下,可以选择使用林肯发布,今天的内容到此结束。记得一键私联,下期再见,拜拜。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2024-03-26 00:10:08

预测AI泛化

2023-04-26 10:21:04

2022-03-13 18:53:31

interfacetypeTypeScript

2024-05-27 00:00:00

localhostIPv6IPv4

2022-09-14 08:11:06

分页模糊查询

2023-04-26 10:06:08

RocketMQ属性Consumer

2024-10-22 09:59:36

虚拟化容器化系统

2022-06-30 13:41:44

SQL 语句group by

2022-01-09 23:20:50

手机国产苹果

2023-12-07 07:08:09

Angular函数

2024-01-01 08:25:53

ViewSurface框架

2021-02-06 21:57:40

Debug模式Release

2022-01-05 11:40:36

Go特性语言

2022-08-02 06:55:35

移动设备Android

2022-12-09 19:00:02

Vite兼容性BigInt

2020-11-04 17:35:39

网络安全漏洞技术

2022-06-08 07:34:25

InnoDBdeleteMySQL

2023-12-12 08:41:01

2023-12-20 08:23:53

NIO组件非阻塞

2024-04-30 09:02:48

点赞
收藏

51CTO技术栈公众号