社区
Java SE
帖子详情
为什么Java中数组比链表的查询速度快?
James-Blackhu
2020-08-16 11:02:09
为什么Java中数组比链表的查询速度快?内部的查询机制是什么??拜托大佬们举个栗子来简单指导一下感谢
...全文
6493
7
打赏
收藏
为什么Java中数组比链表的查询速度快?
为什么Java中数组比链表的查询速度快?内部的查询机制是什么??拜托大佬们举个栗子来简单指导一下感谢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kris2088
2020-08-18
打赏
举报
回复
数组,内存连续,可以通过地址增量获取 链表,内存多数不连续,需要遍历,速度会慢很多 数组结构决定了,数据读取快,写入扩容会很慢,需要搬数据 链表则相反
唐僧爱程序
2020-08-17
打赏
举报
回复
数组的内存单元连续的 查找很快,链表相反
KeepSayingNo
2020-08-17
打赏
举报
回复
数组可以立马找到第几个元素,链表就不行了
sunyiz
2020-08-17
打赏
举报
回复
2
在一楼的例子基础上细化一下: 1、数组中查询: 10个人排成一排,身上都贴好了编号(比如1~10), 你点名喊:“4号”,4号立刻就会站出来, 喊:“8号”,8号立刻就会站出来, 因为大家身上都有编号,知道哪个号对应哪个人 2、链表中查询: 10个人手拉手站成一排,但是没有编号,每个人只知道自己的前一个人和后一个人是谁 你点名喊:“4号”,会从第一个人开始依次报数:“1”、“2”、“3”、“4”, 报到“4”的人才会知道自己是4号,才能站出来 所以,按指定位置查询时链表会比数据慢一些 —————————————————————————————— 但是链表的插入/删除效率要高于数组: 1、数组中插入: 10个人排成一排,身上都贴好了编号(比如1~10) 你现在想让一个人插入进入,排在 3 的位置 此时需要做什么呢?需要从3号开始,把每个人身上的编号撕下来, “3号”编号牌交给新来的,“4号”编号牌交给原来的“3号”…… 依次直到最后一个人,还要给他做一个新的编号牌:“11号” 2、链表中插入: 10个人手拉手站成一排,但是没有编号,每个人只知道自己的前一个人和后一个人是谁 你现在想让一个人插入进入,排在 3 的位置 此时开始报数,报到“3”的人和前一个人(“2”)松开手, 然后新来的人站进去和原来的“2”位置“3”位置的人拉上手,这三人再看一眼记住自己前后的人是谁, OK 链表的插入过程显然比数组中插入要简便的多
James-Blackhu
2020-08-17
打赏
举报
回复
数组和链表增删问题:是不是可以理解为--->增加一个,数组必须一个个遍历(导致增加变慢),增加在最后,删除的时候如果删除了中间的其他的一个一个需要往前面移动,所以速度慢。 链表增加就相当于随便搬了台机子放在机房,不管位置??删除的是后,直接搬走想要搬走的那台机子就可以了??
Mr_布鲁斯
2020-08-17
打赏
举报
回复
数组结构在堆内存中存放的位置是连续的,链表结构位置则是分散的,通过指针来指向下一个数据节点的位置。当进行查询操作时,数组结构中可以根据下标直接获取某数据节点的地址,而链表结构需要通过遍历每个节点来获取需要查询的数据节点的位置。 例如:某机房内,十台机器编号1-10按顺序排成一排,想找第5台找起来很方便;十台机器编号并且分散在机房的不同位置,就需要一台一台去遍历,直到找到第5台
明白畅达
2020-08-16
打赏
举报
回复
数组就像身上编了号站成一排的人,要找第10个人很容易,根据人身上的编号(下标)很快就能找到。增删慢 链表就像手牵着手站成一圈的人,要找第10个人不容易,必须从第一个人一个个数过去。增删快
java
实现空
数组
,
数组
与
链表
的区别,
数组
、
链表
java
实现
1.实现空
数组
//定义一个空
数组
, int[] a=null; int[] a={}; int[] a=new int[0]; 注意:空
数组
没有空间,不能赋值!只能把另一个
数组
的地址给他,这里指的是指针。如a[0]=4;是不成立的,空
数组
没有空间存放。int[] list={2,4}; a=list;这种情况
数组
a就能输出了。 int[] b=new int[10]; //定义一个长度为10的
数组
b int[] c={7,1,2,3,8}; //定义一个
数组
c,并赋值,其
中
ArrayList具有
数组
的
查询
速度快
的优点以及增删速度慢的缺点
在此
链表
上每一个数据节点都由三部分组成:前指针(指向前面的节点的位置),数据,后指针(指向后面的节点的位置)。最后一个节点的后指针指向第一个节点的前指针,形成一个循环。是的,ArrayList(动态
数组
)确实具有
数组
查询
速度快
的优点,但同时也具有增删速度慢的缺点。这是由于ArrayList的实现方式决定的。ArrayList底层是object
数组
,所以ArrayList具有
数组
的
查询
速度快
的优点以及增删速度慢的缺点。ArrayList和LinkedList在用法上没有区别,但是在功能上还是有区别的。
数组
与
链表
的区别深入理解
链表
链表
是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过
链表
中
的指针链接次序实现的。
链表
由一系列结点(
链表
中
每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域(单
链表
只有后指针,双向
链表
有前后两个指针)。
链表
的分类:单向
链表
、双向
链表
及循环
链表
单向
链表
链表
中
最简单的一种是单向
链表
,它包含两个域,一个信息域和一个指针域。这个链接指向列表
中
的下一个节点,而最后一个节点则指向一个空值。
Java
数据结构
数组
,
链表
和树的区别解析教程;
Java
数据结构
数组
,
链表
和树的区别解析教程; 一、
数组
:增删慢,
查询
快 1.增删慢:
数组
的长度是固定的,删除一个元素,必须经过以下4步骤。 1.先创建一个新的
数组
,长度为原来的 -1 2.把 其他的元素复制到新的
数组
中
3.把新
数组
的首地址赋值给原来的变量 4.垃圾回收会 ...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章