概述
目录
一、什么是动态数组
二、动态数组的实现
一、什么是动态数组
Java中提供的数组都是静态数组,即在一个数组定义时确定长度后,使用过程中无法修改此长度。
动态数组就是在普通数组上,增加了一个可以根据元素的个数动态调整数组大小的功能。
二、动态数组的实现
1.创建一个Object类型的value数组,设置数组长度为length,数组元素数为size,并且初始化构造方法
public class MyList {
Object[] values;// 什么数据都可以存
int length;//数组长度
int size;//数组元素数量
//初始化构造方法
public MyList(int initLength){
if(initLength<=0){
System.err.println ("initLength 小于或者等于 0 不合法!! ");
// 默认初始 长度设定为10
length = 10;
values = new Object[length];
size=0;
}else{
length = initLength;
values = new Object[length];
size=0;
}
}
2.通过实现添加数组元素、获取数组元素、移除数组元素、代替数组元素的功能来实现动态数组
(1)添加数组元素
- 创建一个新数组,长度比原来的数组大
- 遍历原数组元素,将原数组中的元素存入新数组中,替换引用
public void add(Object e){
// 检测 数组的空间是否足够
if(size>=length){
// 扩容 : 创建一个新数组,长度比原来数组大,将原数组中的数据存入新数组中,替换引用
int oldlength = length;
int newlength = oldlength+(oldlength>>1);// 1.5倍扩容
// 新建数组
length = newlength;
Object[] newArr = new Object[length];
for(int i = 0; i < oldlength; i++){
newArr[i]=values[i];
}
// 迭代替换
values=newArr;
System.out.println ("扩容完成,新的长度为:"+length);
}
values[size]=e;
size++;
}
(2)获取数组元素
- 判断要获取的数组下标是否越界,若越界,报错
- 判断之后,直接返回要获取的数组元素
public Object get(int index) {
if (index < 0 || index >= size) {
System.err.println("下标越界!!!");
return null;
}
return values[index];
}
(3)移除数组元素
- 判断要获取的数组下标是否越界,若越界,报错
- 后置数据前移
public void remove(int index){
if(index<0 || index>=size){
System.err.println ("下标越界!!!");
return;
}
values[index]=null;
// 后置数据前移
for(int i=index;i<size-1;i++){
values[i] = values[i + 1];
}
values[size-1] = null;
// 更新size
size--;
System.out.println("新的数组为"+values);
}
(4)替换数组元素
- 判断要获取的数组下标是否越界,若越界,报错
- 替换新的数组元素
public Object replace(int index,Object value){
if(index<0 || index>=size){
System.err.println ("下标越界!!!");
return null;
}
//替换新的数组元素
Object oldvalue = values[index];
values[index] = value;
return oldvalue;
}
最后
以上就是爱笑白开水为你收集整理的JAVA之动态数组一、什么是动态数组二、动态数组的实现的全部内容,希望文章能够帮你解决JAVA之动态数组一、什么是动态数组二、动态数组的实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复