定义

数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据
支持随机访问,根据下标随机访问的时间复杂度为 O(1)。
下标从0开始,是因为如果从1开始计算偏移时a[k]_address = base_address + (k-1)*type_size,每次随机访问都要多一次减法运算。

特定场景下的优化

无序数组的快速插入:
image.png

缓存删除操作,标记-删除法
image.png

JAVA中数组的使用

int[] a = int[1]; // 分配内存并初始化0值
int[] a = int[]{1}; // 此处指定容量编译会报错
int[] a = {1,2,3}; // 省略写法,但是传匿名数组参数还是得带上类型print(new int[]{1,2,3})
int[][] a = new int[3][]; // 相当于申请了一个长度为3的数组,每个元素指向null,并且只能存储int[]类型。
int[][] a = {null, null, null}; // 省略写法

// List转int类型,由lambda支持,或者循环赋值,其他基本类型同理。
int[] a = list.stream().mapToInt(e->e).toArray();