package com.bjsxt.arrayList;
import java.util.Arrays;
public class ArrayList {
//定义数组储存数据
private Object array [];
//记录数组中存储元素的个数
private int size;
//给size提供一个共有的访问方法
public int getSize(){
return this.size;
}
//给数组提供一个无参构造器
public ArrayList(){
array=new Object [10];
}
//提供有参构造器
public ArrayList(int len){
array=new Object[len];
}
//插入方法
public void add(Object element){
//判断数组是否需要扩容
ensureCapacityInternal();
//插入元素
array[size]=element;
//更新size
size++;
}
//根据索引返回集合中的元素
public Object get(int index){
//判断输入的索引是否合法
if(index<0 ||index>=size){
throw new RuntimeException(“索引不合法:index=”+index);
}
return array[index];
}
//给集合中添加元素
public void add(int index,Object element){
//判断输入索引的合法性
if (index<0 || index>size){
throw new IndexOutOfBoundsException(“索引不合法,index=”+index);
}
//先判断需要扩充数组
ensureCapacityInternal();
//根据插入为止给数组中的元素移位(从后往前移位)
for(int i=size;i>index;i–){
array[i]=array[i-1];
}
array[index]=element;
size++;
}
//给集合中删除元素
public Object remove(int index){
//判断索引是否合法
if (index<0||index>=size){
throw new ArrayIndexOutOfBoundsException("索引异常:index="+index);
}
//返回需要删除的元素
Object element=array[index];
//元素移位,从前往后移位
for(int i=index;i<size-1;i++){
array[i]=array[i+1];
}
//将最后一个元素置为null
array[size-1]=null;
size--;
return element;
}
//判断数组是否需要扩容
private void ensureCapacityInternal(){
//当数组的长度等于所放元素的个数时,就需要扩充数组
if (array.length==size){
//创建新数组,长度要大于之前数组的长度
Object [] newArray= new Object[array.length*2];
//将之前的数组拷贝到新数组中
for(int i=0;i<array.length;i++){
newArray[i]=array[i];
}
//让原数组的首地址指向新数组
array=newArray;
}
}
//提供toString 方法
@Override
public String toString() {
return "ArrayList{" +
"array=" + Arrays.toString(array) +
'}';
}
}