//还可以完善一下,rangeCheck 里应该抛出数组越界异常!
public class ArrayListtest {
private Object[] elementDate;
private int size;
public ArrayListtest(){this(10);} //默认容量
public ArrayListtest(int initialCapacity) {
if (initialCapacity < 0) {
try{
throw new Exception();
} catch(Exception e){
e.printStackTrace();
}
}
this.elementDate = new Object[initialCapacity];
}
public void add(Object o){ //添加元素
if(size == elementDate.length){
Object[] temp = new Object[elementDate.length*2+2];
System.arraycopy(elementDate,0,temp,0,elementDate.length);
//扩容
elementDate = temp;
}
elementDate[size++] = o;
}
public int getLength(){ //总长
return elementDate.length;
}
public int getSize(){ //当前长度
return size;
}
public boolean isEmpty(){
return size==0;
}
public void remove(int index){ //删除对应索引的元素
rangeCheck(index);
System.arraycopy(elementDate,index+1,elementDate,index,size-index-1);
elementDate[--size] = null; //长度减少了 最后一个放空吧
}
public Object getElement(int index){ //获取对应索引的元素
rangeCheck(index);
return elementDate[index];
}
public void removeelement(Object o){ //删除数组列表里的所有传入值
for(int index=0;index<size;index++){
if(o.equals(elementDate[index])){
remove(index);
}
}
}
public Object set(int index,Object o){ //更新对应索引位置的值
rangeCheck(index);
Object temp = elementDate[index];
elementDate[index] = o;
return temp;
}
public void addElement(int index,Object o){ //插入值
if(index<0||index>size){
System.out.println("越界");
}
if(size+1>=elementDate.length){
Object[] temp = new Object[elementDate.length*2+2];
System.arraycopy(elementDate,0,temp,0,elementDate.length);
//扩容
elementDate = temp;
}
System.arraycopy(elementDate,index,elementDate,index+1,size-index);
elementDate[index] = o;
size++;
}
private void rangeCheck(int index){ //越界检查
if(index<0||index>=size){
System.out.println("越界");
}
}