一:数组的定义
1.定义
在计算机科学中,数组是由一组元素组成的数据结构,每个元素有至少一个索引或键来标识。
我们要知道,数组内的元素地址是连续的。
说到数组,相信我们大家都很熟悉,平时我们在练习时,最常用的就是静态数组。除了静态数组,Java中还存在一种动态数组,比如集合ArrayList就是动态数组的一种。
其实在很多的时候,静态数组根本不能满足我们编程的实际需要,比如说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组
下面我们就来深入了解一下动态数组
2.动态数组
①什么是动态数组
动态数组是一种可以自动调整大小的数组,大小在初始化时可以设置,而且可以随着向数组中添加或者删除元素从而动态增长或缩小
②动态数组的优点
Ⅰ.支持随机访问:可根据索引来访问数组中的元素,相比与链表来说访问元素更加高效
Ⅱ.动态增长或缩小:可以动态的增加或者缩小
数组的大小,相比与静态数组,空间利用更加合理
③动态数组的缺点
Ⅰ.插入和删除元素的效率低:相比与链表来说,动态数组的插入和删除效率更低
二:增删改查方法的实现
1.动态数组的创立
动态数组也是基于静态数组来实现的,我们可以根据扩容静态数组的大小从而增加动态数组的大小,因此在成员变量中我们包含arr数组,size动态数组大小以及capacity数组容量
2..增删改方法的实现
了解到了动态数组,那么下面我们就对动态数组的一些功能(增删改查)来做一下实现吧
①数组的扩容
在我们实现增删改查之前,先来实现一下数组的扩容
思路:创建一个新的数组,将容量已满的数组拷贝到新数组中,再将新数组代替原来的数组
②add 添加元素
思路:若数组已满则进行扩容。我们要将要插入位置之后的元素向后移动一位,再将要插入的元素插入,更新size指针
若要插入的位置位于数组尾部(此时size等于index),那么我们就不用再去移动其他数据了,直接就插入索引位置即可。而对于在其他位置插入这种情况,最后我们移动后,也是要将元素插入索引位置,那么我们就可以将两种情况插入的代码合并出来,从而简化代码
③remove 删除元素
思路:将要删除位置后面的元素向前移动,更新size指针
④get 获取指定位置元素
思路:直接根据索引返回数组对应位置元素
⑤set 修改元素
思路:直接对应索引修改
3.结果显示
各位方法都自己写了一遍没,下面我们带入数据爽一下吧
在我们平时的练习中,我们对于动态数组的运用大多数就是集合ArrayList的运用
注:若有小伙伴想要刷题巩固知识而不知道如何下手,推荐使用本平台的算法技能树
若有错误,不足之处,望各位指出更正₍˄·͈༝·͈˄*₎◞ ̑̑