自写arraylist

方法c 数组循环5轮 只保存4轮 不知道为何 当然可以用其他方式返回输入的数字不会少存,只是不明白这里为什么不可以

public class ArrayBox {
//默认数组长度为2
String[] defaultArray=new String[0];
//默认索引号为0
int defaultIndex=0;

//确定数组空间容量是否足够 a
//需要参数 最小长度
//不需要返回值
public void  checkCapacity(int minlengthA){
    System.out.print("a确定容量"+(defaultIndex+1)+"次 ");
    //如果 现有长度不够  去扩容
    if(minlengthA>defaultArray.length) {
    //调用扩容方法 enlarge
        this.enlarge(minlengthA);
    }
    //如果长度足够 不执行 扩容-存储操作 用现有数组作为储存器
}

//如果数组不够长就扩容 b
//需要参数 最小长度
//不需要返回值
public void  enlarge(int minlengthB){
    System.out.print("b扩容"+(defaultIndex+1)+"次 ");
    //新数组长度等于默认长度加一
    int newLength=defaultArray.length+1;
    //如果长度改变 调用储存方法 用新数组储存
    //接收返回的新数组  替换默认数组
    defaultArray=this.save(defaultArray,minlengthB);
    //按照这个新的长度 创建一个新数组 旧数组元素全部搬入到新数组中
}

//存入元素 c
//需要参数 老数组数据 足够的长度
//需要返回值 返回新数组
public String[] save(String[] oldArray,int minlengthC){
    System.out.print("c储存"+(defaultIndex+1)+"次 ");
    //创建新数组长度为最小要求长度
    String[] newArray=new String[minlengthC];
    //循环  i小于老数组长度  旧数组元素全部搬入到新数组中
    for(int i=0;i<oldArray.length;i++){
        //x 接收存入值并输出
        String x=newArray[i]=oldArray[i];
        System.out.print("存"+x+" ");
    }
    //检测数组现在到底有什么
    for(String v:newArray){
        System.out.print("内"+v+" ");
    }
    //返回装满老元素的  新数组
    return newArray;
}

//获取元素 d
//需要参数 指定目标位置
//需要返回值 返回目标值
public String obtain(int indexWant){
    //System.out.print("d index返回"+(defaultIndex+1)+"次 ");
    //检测所需查看的index范围是否合法
    this.checkIndex(indexWant);
    //如果上面一行代码可以走过去 证明index是合法
    //需要目标值 返回目标值
    return defaultArray[indexWant];
}


//检测所需查看的index范围是否合法 e
public void checkIndex(int indexView){
    //System.out.print("e index检测"+(defaultIndex+1)+"次 ");
    //如果index小于零或者大于 默认index
    if(indexView<0||indexView>defaultIndex){
        System.out.println("index越界");
    }
}


//删除元素 f
//需要参数 指定元素,元素位置
//需要返回值 返回新数组(删除目标后)
public String delete(int elementIndex){
    //System.out.print("f 删除"+(defaultIndex+1)+"次 ");
    //检测所需查看的index范围是否合法
    this.checkIndex(elementIndex);
    //如果上面一行代码可以走过去 证明index是合法
    String result=defaultArray[elementIndex];
    for(int i=elementIndex;i<defaultIndex-1;i++){
        //从目标元素index开始至数组长度-1为止 将后面位置元素依次前移覆盖
        defaultArray[i]=defaultArray[i+1];
    }
    defaultArray[--defaultIndex] = null;
    return result;
}

//方法入口
//需要参数 主方法填入
//需要返回值 返回数组
public int  add(String inputParameter){
    System.out.print("add已启动第"+(defaultIndex+1)+"次 ");
    //  调用a方法 检测长度
    this.checkCapacity(defaultIndex+1);
    //上面括号内决定数组末尾有几个0;所需长度最少比默认长度要大一个;不然直接报错
    System.out.println();
    //长度合理 开始存数 索引依次增 挨个存
    defaultArray[defaultIndex++]=inputParameter;
    //可以没有返回值
    return 1;
}
public int defaultIndex(){
    return this.defaultIndex;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值