package com.lovo.superarray;
//乾坤袋
public class SuperArray {
private Object[] array = new Object[10];//真正存放元素的空间
private int size = 0;//1、表明放了几个元素;2、下一个元素要放的下标值 。
//增删改查---CRUD
//增加元素
public void add(Object value){
//当array放满以后,要对其进行扩容,每次扩容10个!
if(this.size == this.array.length){
Object[] newArray = new Object[this.array.length + 10];
System.arraycopy(this.array, 0, newArray, 0, this.array.length);
this.array = newArray;
}
this.array[size] = value;
size++;
}
//删除元素
public void delete(int index){
//当array空余太多的时候,要对其进行缩容,每次减少10个。
//当array只有10个的时候,不再进行缩容
if(index >= 0 && index < this.size){
//删除动作
System.arraycopy(this.array, index + 1, this.array, index, this.size - index - 1);
this.size--;
//缩容动作
if(this.array.length - this.size >= 10 && this.array.length > 10){
Object[] newArray = new Object[this.array.length - 10];
System.arraycopy(this.array, 0, newArray, 0, this.size);
this.array = newArray;
}
}
}
//修改指定位置的元素
public void update(int index,Object value){
if(index >= 0 && index < this.size){
this.array[index] = value;
}
}
//查询元素
public Object get(int index){
if(index >= 0 && index < this.size){
return this.array[index];
}else{
throw new IndexOutOfBoundsException();
}
}
//查询元素个数
public int size(){
return this.size;
}
//返回容量
public int capibility(){
return this.array.length;
}
}