简单工具类ArrayBox---模仿数组
2021-01-20 20:13
标签:val 长度 intern 比较 check box 索引 size ring 简单工具类ArrayBox---模仿数组 标签:val 长度 intern 比较 check box 索引 size ring 原文地址:https://www.cnblogs.com/meng--yu/p/12899646.htmlpublic class ArrayBox {
//设计一个属性,存放真实的数据
private int[]elementDate;
private final int DEFAULT_CAPACITY=10;
//构造方法地重载
public ArrayBox(){
elementDate=new int[DEFAULT_CAPACITY];
}
public ArrayBox(int capacity){
elementDate=new int[capacity];
}
//有效元素个数
private int size;
private void ensureCapacityInternal(int minCapacity){
//判断,最小容量比原数组长度大,就扩容
if (minCapacity-elementDate.length>0){
//计算扩容大小
this.grow(minCapacity);
}
}
private void grow(int minCapacity){
//获取原数组长度
int oldCapacity=elementDate.length;
//在原属组织上扩容1.5倍
int newCapacity=oldCapacity+(oldCapacity>>1);
//比较计算后的长度与所需的长度
if (newCapacity-minCapacity newCapacity=minCapacity;
}
//把就数组中的元素复制到新数组中
elementDate= this.copyOf(elementDate,newCapacity);
}
private int[]copyOf(int[] oldArray,int newCapacity){//newCapacity新数组的长度
//按提供的长度创建一个新数组
int []newArray=new int[newCapacity];
for (int i=0;i
}
return newArray;
}
public boolean add(int element){
//1.确保数组容量够用
this.ensureCapacityInternal(size+1);
//上面代码执行完 证明elementDate地数组肯定够用
//直接将新来的element元素存入数组中 ,让size多记录一个
elementDate[size++]=element;
return true;
}
private void rangeCheck(int index){
if (index=size){
//自定义异常
throw new BoxIndexOutOfBoundsException("index:"+index+" size:"+size)
}
}
//获取指定位置的元素
public int get(int index){
//检测给定的index是否合法
this.rangeCheck(index);
//返回
return elementDate[index];
}
//删除指定位置的元素 参数是索引位置
public int del(int index){
this.rangeCheck(index);
//找到index位置地元素保存起来
int oldValue=elementDate[index];
for (int i=index;i
}
//将最后一个元素删除 让size少记录一个
elementDate[--size]=0;
//返回数组
return oldValue;
}
public int getSize() {
return size;
}
}
//自定义异常public class BoxIndexOutOfBoundsException extends RuntimeException {
public BoxIndexOutOfBoundsException(){}
public BoxIndexOutOfBoundsException(String src){
super(src);
}
}
上一篇:桶排序
文章标题:简单工具类ArrayBox---模仿数组
文章链接:http://soscw.com/index.php/essay/44687.html