diff --git "a/group05/1377699408/\344\275\234\344\270\232/20170226/.gitignore" "b/group05/1377699408/\344\275\234\344\270\232/20170226/.gitignore" new file mode 100644 index 0000000000..eba4a99831 --- /dev/null +++ "b/group05/1377699408/\344\275\234\344\270\232/20170226/.gitignore" @@ -0,0 +1,4 @@ +/bin +/.settings +.classpath +.project \ No newline at end of file diff --git "a/group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" "b/group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" new file mode 100644 index 0000000000..3e3777aee1 --- /dev/null +++ "b/group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" @@ -0,0 +1,56 @@ +package list; + +import java.util.Arrays; + +public class ArrayList { + private transient static final int INITIAL_SIZE = 10; + private transient int arrayLength; + private transient int size; + private transient E[] array; + public ArrayList(){ + array = (E[]) new Object[INITIAL_SIZE]; + arrayLength = INITIAL_SIZE; + } + public ArrayList(int size){ + if(size<=0){ + throw new IllegalArgumentException("参数不可以小于0"); + } + array = (E[])new Object[size]; + arrayLength = array.length; + ensureCapacity(size); + this.size = size; + } + public int size(){ + return size; + } + public void add(E e){ + ensureCapacity(size+1); + array[size] = e; + size++; + } + public E get(int index){ + if(index<0 || index > size){ + throw new IllegalArgumentException("索引越界"); + } + return array[index]; + + } + public E set(int index, E e){ + if(index<0 || index>size){ + throw new IllegalArgumentException("索引越界"); + } + E result = array[index]; + array[index] = e; + return result; + } + public void ensureCapacity(int size){ + E[] oldArray = array; + int oldSize = arrayLength; + while(size>arrayLength){ + arrayLength = arrayLength + (arrayLength >> 1); + } + if(oldSize!=arrayLength){ + array = Arrays.copyOf(oldArray, arrayLength); + } + } +}