java BoxArray

package util;

import java.lang.reflect.Array;

public class MyBox {
//    存放真实数据的数组
private  int[] elementData;
//    记录数组内存储的有效元素个数
private int size = 0;

//构造方法重载
private static int STANTIC_DATA = 10;
public MyBox (){
    elementData = new int[STANTIC_DATA];
}
public MyBox(int capacity){
    elementData = new int[capacity];
}

//确保容量的方法
private void ensureCapacity (int dataSize){
    if(dataSize - elementData.length > 0){
//            放不下,需要扩容 ,调用扩容方法
        this.extendCapacity(dataSize);
    }
}
//    扩容方法
private void extendCapacity (int dataSize){
//        原来数组的长度
    int oldLength = elementData.length;
//        将原数组扩大1.5倍
    int newLength = oldLength + (oldLength >> 1);
    if(dataSize - newLength > 0){
//         如果计算的长度小于需要的长度
        newLength = dataSize;
    }
//        得到一个新数组,把原数组的数据移到新数组  调用移动数据方法
    elementData = this.moveData(elementData,newLength);
}
//
//移动数据方法
private int[] moveData (int[] elementData,int newLength){
    int[] newArr = new int[newLength];
    for(int i = 0; i < elementData.length; i ++){
        newArr[i] = elementData[i];
    }
    return newArr;
}

//    检测方法
private void rangCheck(int index){//范围检测
    if(index<0 || index>=size){
        throw new IndexException("index:"+index+"size:"+size);//抛出异常
    }

}


//    用来将用户给定的elment存起来 参数是需要存起来的元素 返回值是否存储成功
public Boolean add(int element){
//       添加数据 先确保容量,调用ensureSize方法
    this.ensureCapacity(size+1);
    elementData[size++] = element;
    System.out.println("插入成功");
    return true;
}

//获取给定元素的位置
public int get(int index){
    this.rangCheck(index);
    System.out.println("获取"+index);
    return elementData[index];
}
//    删除给定元素的位置
public int remove(int index){
    this.rangCheck(index);
    int oldVal = elementData[index];
//
    for(int i = index; i < size-1; i ++){
        elementData[i] = elementData[i+1];
    }
//    将最后一个元素删除,让size减少记录一个
    elementData[--size] = 0;
    System.out.println("删除成功"+oldVal);
    return oldVal;
}

//获取size的有效个数
public int size(){
    System.out.println(size);
    return size;
}
}

//执行
package util;

public class Test {
    public static void main(String[] args) {
        MyBox m = new MyBox();
        for(int i = 1; i <= 44; i ++){
            m.add(i*2);//往数组中循环插入数
        }
//       m.add(12);//插入单个数
        m.size();//获取长度
//        m.get(10);//获取指定位置
//        m.remove(1);//删除指定位置
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值