package com.coding.basic; import java.util.Objects; public class ArrayList implements List { private int size = 0; private int Scale; //每次扩展大小 private Object[] elementData = new Object[100]; public ArrayList() { this.Scale = 10; } public ArrayList(int i) { this.Scale = i; } public void add(Object o){ if (this.size == elementData.length) { DoEnlage(); } elementData[size] = o; this.size++; } private void DoEnlage() { if (this.Scale >= 1 && this.Scale <= 10000) { Object[] NewElementData = new Object[this.elementData.length + this.Scale]; System.arraycopy(this.elementData,0,NewElementData,0,this.elementData.length); this.elementData = NewElementData; } } //index从1开始 位置1,2,3,4,5,6 public void add(int index, Object o){ if (this.size == elementData.length) { DoEnlage(); } int i = 0; //遍历赋值 for(i = this.size; i >= index;i--) { this.elementData[i] = this.elementData[i - 1]; } this.elementData[i] = o; this.size++; } public Object get(int index){ if (index >= 1 && index <= this.size) { return this.elementData[index - 1]; } else { return null; } } public Object remove(int index){ if (index >= 1 && index <= this.size) { int i = 0; Object DelElement = this.elementData[index - 1]; for(i = index; i <= this.size; i++) { this.elementData[i - 1] = this.elementData[i]; } this.elementData[i] = null; this.size--; return DelElement; } else { return null; } } public int size(){ return this.size; } public Iterator iterator(){ return null; } public Object[] ToArray() { Object [] Array = new Object[this.size]; if(this.size == 0) { return new Object[0]; } //使用System.arraycopy()来复制数组是更优的办法 zwj 20170309 for (int i = 0 ; i < this.size; i ++) { Array[i] = this.elementData[i]; } return Array; } }