package com.github.wdn.coding2017.basic; import java.util.Arrays; public class ArrayList implements List { private int size = 0; private Object[] elementData; public ArrayList(){ elementData = new Object[10]; } public ArrayList(int size){ elementData = new Object[size]; } public void add(Object o){ if(size>=elementData.length){ elementData = Arrays.copyOf(elementData,elementData.length*2); } elementData[size]=o; size++; } public void add(int index, Object o){ Object[] newElementData; if(size()+1>=elementData.length){ newElementData=new Object[elementData.length*2]; }else{ newElementData=new Object[elementData.length]; } for (int i = 0; i < elementData.length; i++) { if(index==1){ newElementData[i]=o; }else if(i>index) { newElementData[i]=elementData[i-1]; }else{ newElementData[i]=elementData[i]; } } elementData = newElementData; size++; } public Object get(int index){ if(index>=size){ throw new IndexOutOfBoundsException(); } return elementData[index]; } public Object remove(int index) { if(index>=size){ throw new IndexOutOfBoundsException(); } Object returnO = elementData[index]; for (int i = index; i < size; i++) { if(i==size-1){ elementData[i]=null; }else { elementData[i] = elementData[i + 1]; } } size--; return returnO; } public int size(){ return size; } public Iterator iterator(){ return null; } public static void main(String[] args) { ArrayList list = new ArrayList(2); list.add("1"); list.add("2"); list.remove(1); list.add("3"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } int[] i = {}; System.out.println(i[0]); } }