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);//删除指定位置
}
}
我的理解是,相当于封装一个数组,以便日后使用时方便public class BoxArray { private int[] elementData = new int[10];//初始化一个长度为10的私有数组// for(int i = 0; i < elementData.length;i++){//// } public int size = 0...