package com.zzk.coding2017.zuoye_1; public class ArrayList implements List { private int size = 0; private int length = 100; private Object[] elementData = new Object[length]; public void add(Object o){ if(size<length){ elementData[size]=o; size++; }else{ length = length + 100; Object[] tmp = new Object[length]; System.arraycopy(elementData, 0, tmp, 0, size); elementData = tmp; elementData[size]=o; size++; } } public void add(int index, Object o){ if(index<0||index>size-1){ return ; }else{ if(size<length){ Object[] tmp = new Object[size-1-index]; System.arraycopy(elementData, index+1, tmp, 0, size-1-index); elementData[index+1]=o; System.arraycopy(tmp, 0, elementData, index+2, size-1-index); size++; }else{ //增加空间 length = length + 100; Object[] tmp1 = new Object[length]; System.arraycopy(elementData, 0, tmp1, 0, size); elementData = tmp1; //插入 Object[] tmp2 = new Object[size-1-index]; System.arraycopy(elementData, index+1, tmp2, 0, size-1-index); elementData[index+1]=o; System.arraycopy(tmp2, 0 , elementData, index+2, size-1-index); size++; } } } public Object get(int index){ if(index<0||index>size-1){ return null; }else{ return elementData[index]; } } public Object remove(int index){ if(index<0||index>size-1){ return null; }else{ Object result = elementData[index]; if(index+1==size){//即index是最后一个元素 elementData[index] = null; size--; return result; }else{ System.arraycopy(elementData, index+1, elementData, index, size-1-index); size--; return result; } } } public int size(){ return size; } public Iterator iterator(){ return new Iterator() { int current = 0; @Override public Object next() { // TODO Auto-generated method stub if(current<size){ return elementData[current++]; }else{ return null; } } @Override public boolean hasNext() { // TODO Auto-generated method stub if(current<size) return true; else return false; } }; } }