数组结构的超简单介绍
有限个相同类型的变量组成的有序集合叫做数组,其中数组的下标是从0开始的
在存储方式上,会创建连续的内存空间存放一组类型相同的数据
从0开始是计算效率考虑
下面定义一个数组
int[] attr =new int[]{0,1,2,3,4};
当从0开始,attr[k]=attr[0]+k*attr.length;
当从1开始,attr[k]=attr[0]+(k-1)*attr.length;
当计算的数据很大时,计算效率会降低
同时因为是连续的内存空间,所以根据下标可以很快找到需要的数据,这就是ArrayList查询很快的原因
还有一个问题,说数组的增删很慢,以前八股文听得很多,具体啥原因也不知道,这次做个了解,
当我们删除2后,5补上2的位置,4补上5的位置,9补上4的位置,8补上9的位置,这样计算下来时间消耗比查询时间多很多
因为数组总是占用连续的内存空间,所以当数组中有数据删除时,总要补充空缺的位置
代码部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package com.java.array; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.StopWatch; /** * @Description: * @Author: Yourheart * @Create: 2023/2/3 14:05 */ @Slf4j public class ArrayTest { int [] nums = new int [ 24 ]; public ArrayTest() { nums[ 0 ] = 3 ; nums[ 1 ] = 1 ; nums[ 2 ] = 2 ; nums[ 3 ] = 5 ; nums[ 4 ] = 4 ; nums[ 5 ] = 9 ; nums[ 6 ] = 8 ; } public void deleteMiddle( int p) { for ( int i = p; i < nums.length; i++) { nums[i - 1 ] = nums[i]; } } public void display() { for ( int n : nums) { System.out.println(n); } } public static void main(String[] args) { ArrayTest demo1 = new ArrayTest(); StopWatch started = StopWatch.createStarted(); demo1.deleteMiddle( 3 ); log.info( "耗时:{}" ,started.toString()); demo1.display(); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异