package com.coding.basic; /** * @deprecated 用数组实现list * @author wang * */ public class MyArrayList implements List { private int size = 0; private Object[] elementData = new Object[100]; public void add(Object o){ // 确保数组大小 ensureCapacity(size + 1); // 数组赋值并使得size+1; elementData[size ++] = o; size ++; } /** * 确保数组不越界,否则就扩容; * @param minCapacity list的大小; */ public void ensureCapacity(int minCapacity) { int oldCapacity = elementData.length; int newCapacity = (oldCapacity / 3) * 2 + 1; if (minCapacity > newCapacity) { // 对数组扩容 Object[] newDate = new Object[newCapacity]; System.arraycopy(elementData, 0, newDate, 0, oldCapacity); elementData = newDate; } } public void add(int index, Object o){ // 对index进行校验: rangeCheck(index); ensureCapacity(size + 1); System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = o; size ++; } /** * 边界检查: * @param index */ private void rangeCheck(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException("size" + size + ", index:" + index); } } public Object get(int index){ rangeCheck(index); return elementData[index]; } public Object remove(int index){ rangeCheck(index); Object oldValue = elementData[index]; System.arraycopy(elementData, index, elementData, index - 1, size - index); return oldValue; } public int size(){ return size; } public Iterator iterator(){ return null; } }