diff --git a/group15/1517_279137987/my/collection/linear/MyArrayList.java b/group15/1517_279137987/my/collection/linear/MyArrayList.java new file mode 100644 index 0000000000..380c552539 --- /dev/null +++ b/group15/1517_279137987/my/collection/linear/MyArrayList.java @@ -0,0 +1,73 @@ +package my.collection.linear; + +import java.util.Arrays; + +public class MyArrayList implements MyList{ + + private int size = 0; + private int CAPACITY = 10; + private Object[] elementData = new Object[CAPACITY]; + + public MyArrayList(int len){ + this.elementData = new Object[len]; + } + + public void add(Object obj){ + add(size,obj); + } + + public void add(int index, Object obj){ + if(index < 0){ + System.out.println("insert position illegal."); + }else{ + if(size + 1 < elementData.length){ + System.arraycopy(elementData, 0, this.elementData, 0, index); + System.arraycopy(elementData, index, this.elementData, index+1, elementData.length-index-1); + this.elementData[index] = obj; + }else{ + Object[] newElementData = Arrays.copyOf(elementData, elementData.length + CAPACITY); + System.arraycopy(elementData, index, newElementData, index+1, elementData.length - index); + newElementData[index] = obj; + this.elementData = newElementData; + } + size++; + } + } + + public Object remove(int index){ + if(index == 0){ + System.arraycopy(elementData, 1, this.elementData, 0, elementData.length-1); + }else{ + System.arraycopy(elementData, 0, this.elementData, 0, index); + System.arraycopy(elementData, index + 1, this.elementData, index, elementData.length-index-1); + } + size--; + return elementData[index]; + } + + public Object get(int index){ + if(index < 0 || index > elementData.length-1){ + return "get position illegal."; + }else{ + return elementData[index]; + } + } + + public int size(){ + return size; + } + + public String toString(){ + String str ="toString():"; + for(int i=0; i