package com.coding.basic; import java.util.NoSuchElementException; public class ArrayList implements List { private int size = 0; private static final int DEFAULT_SIZE = 100; private Object[] elementData = new Object[DEFAULT_SIZE]; //添加元素 public void add(Object o){ add(size(),o); } public void add(int index, Object o){ if(elementData.length==size()){ ensureCapacity(size()*2 + 1); } for (int i = size; i > index; i--) elementData[i]=elementData[i-1]; elementData[index] = o; size++; } //扩容 public void ensureCapacity(int newCapacity){ if(newCapacity < size){ return; } Object[] oldElements = elementData; elementData = new Object[newCapacity]; for (int i = 0; i < size; i++) { elementData[i] = oldElements[i]; } } //返回固定下标的元素 public Object get(int index){ if(index<0 || index >=size){ throw new ArrayIndexOutOfBoundsException("指定的index超过界限"); } return elementData[index]; } //删除指定位置的元素 public Object remove(int index){ Object removeElement = elementData[index]; for (int i = index; i < size; i++) { elementData[i] = elementData[i+1]; } size--; return removeElement; } public int size(){ return size; } public Iterator iterator(){ return new ArrayListIterator(); } private class ArrayListIterator implements Iterator{ private int current = 0; @Override public boolean hasNext() { return current < size; } @Override public Object next() { if(!hasNext()){ throw new NoSuchElementException(); } return elementData[current+1]; } } }