码迷,mamicode.com
首页 > 编程语言 > 详细

简单工具类ArrayBox---模仿数组

时间:2020-05-16 12:44:58      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:val   长度   intern   比较   check   box   索引   size   ring   

public 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<0){
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<oldArray.length;i++){
newArray[i]= oldArray[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<0||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-1;i++){
elementDate[i]=elementDate[i+1];
}
//将最后一个元素删除 让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---模仿数组

标签:val   长度   intern   比较   check   box   索引   size   ring   

原文地址:https://www.cnblogs.com/meng--yu/p/12899646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!