数组结构的超简单介绍

有限个相同类型的变量组成的有序集合叫做数组,其中数组的下标是从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();
    }
 
}

  

 

posted @   不忘初心2021  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示