基于面向对象,模拟ArrayList的实现
tip:
- 数组可以保存多个元素。初始化给10个空间,每次不够用后空间添加前面的一半
- 得到动态数组中保存的元素个数size()。得到实际保存的数据个数
- 添加数据
- 根据下标插入数据
- 根据下标删除元素,返回被删除的元素
- 根据下标修改元素,返回修改前的元素值
- 根据下标得到元素值
话不多说,直接上代码:
package com.softeem.dynamicarray;
public class DynamiccArray {
int []arr;
int size;
//初始化变量必须在构造方法里
public DynamiccArray(){
arr=new int[10];
}
//得到数据个数
public int size(){
return size;
}
//向动态数组中增加元素
public void add(int n){
if(arr.length<size+1){
extendArray();
}
arr[size++]=n;
}
//扩展数组长度
public void extendArray(){
int []newArray=new int[arr.length+arr.length/2];
System.arraycopy(arr,0,newArray,0,arr.length);
arr=newArray;
}
// 根据下标删除动态数组中的数据,返回被删除的元素
public int remove(int index) {
if (index > size) {
System.out.println("您操作的元素不存在!");
return -1;
}
int n = arr[index];
System.arraycopy(arr, index + 1, arr, index, arr.length - index - 1);
arr[--size] = 0;
return n;
}
public void set(int index,int n){
if (index>size){
System.out.println("不存在");
return ;
}
arr[index]=n;
}
public int get(int index){
if (index>size){
System.out.println("不存在");
return 0;
}
return index;
}
public String toString(){
String bufString="[";
for(int i=0;i<size;i++){
bufString=bufString+arr[i];
if(i!=size-1){
bufString+=",";
}
}
bufString+="]";
return bufString;
}
}
以上就是实现的代码,下面咱们来测试一下效果:
package com.softeem.dynamicarray;
public class Test01 {
public static void main(String[] args) {
DynamiccArray da=new DynamiccArray();
for(int i=1;i<=20;i++){
da.add(i);
}
System.out.println(da.size);
System.out.println(da.toString());
System.out.println(da.remove(9));
da.set(3, 4444);
System.out.println(da.get(14));
System.out.println(da.size);
System.out.println(da.toString());
}
}
注意
- 这种数组存储的数据是已经固定了类型的而且类型是一致的,
以上就是全部的实现代码,如果还有不懂的可以评论或者私信我。