public class ArrayList { //定义Object类型的数组 Object[] data ; //统计变量,用于统计数组元素的真实个数 int size; public ArrayList() { //初始化长度为10 this ( 10 ); } ArrayList( int length){ //通过构造方法指定数组的长度 data = new Object[length]; } //长度 public int getLength(){ return size; } //为了方便看效果,我们覆写toString()方法 //为了打印真实的数组内容,除去空余的默认值 @Override public String toString() { //构建一个新的数组,长度为size Object[] newdata = new Object[size]; //将data中的元素拷贝到新数组中 System.arraycopy(data, 0 , newdata, 0 , size); //利用Arrays类,将数组转换成字符串 return Arrays.toString(newdata); } //增 void add(Object obj){ //如果数组满了 if (size>=data.length){ //构建一个新的数组,容量默认增加10 Object[] newdata = new Object[data.length+ 10 ]; //将原来的数组内容拷贝到扩容后的数组中 System.arraycopy(data, 0 , newdata, 0 , size); } //将新增的元素添加在数组的末尾 data[size] = obj; //数组真实长度自增1 size++; } //查找指定索引处的元素; public Object getElementByIndex( int index){ if (index< 0 ||index>size){ throw new ArrayIndexOutOfBoundsException( "数组越界了,索引范围是:0~" +(size- 1 )); } return data[index]; } //查找指定元素第一次出现的索引 public int getFirstIndexByElement(Object obj){ for ( int i = 0 ; i < size; i++) { if (obj.equals(data[i])){ return i; } } return - 1 ; //没有找到 } //删除指定索引处的元素 public void deleteElementByIndex( int index){ if (index< 0 ||index>size){ throw new ArrayIndexOutOfBoundsException( "数组越界了,索引范围是:0~" +(size- 1 )); } System.arraycopy(data, index+ 1 , data, index, size-index- 1 ); size--; } //删除指定的第一个元素 public void deleteFirstElement(Object obj){ int index = getFirstIndexByElement(obj); System.out.println(index); deleteElementByIndex(index); } } |