package com.coding.basic; import java.util.Arrays; /** * 2017/2/24 * @author 236995728 * */ public class ArrayList implements List { private static int size = 0; private static Object[] elementData = new Object[100]; /** * 添加元素 */ @Override public void add(Object o){ if(size >= elementData.length){ grow(size); } elementData[size++] = o; } /** * 按索引添加元素 */ @Override public void add(int index, Object o){ if(index < 0){ throw new IllegalArgumentException("param invalid"); } if(index >= elementData.length){ grow(index); } for(int i=index; i<=size; i++){ elementData[i] = elementData[i+1]; } elementData[index] = o; size ++; } /** * 根据索引获取元素 */ @Override public Object get(int index){ if(index<0 || index >size){ throw new IllegalArgumentException("param invalid"); } return elementData[index]; } /** * 根据索引删除元素 */ @Override public Object remove(int index){ if(index<0 || index >size){ throw new IllegalArgumentException("param invalid"); } Object o = elementData[index]; for(int i=index;i<size;i++){ elementData[i] = elementData[i+1]; } size --; return o; } /** * 返回集合元素的个数 */ @Override public int size(){ return size; } public Iterator iterator(){ return null; } /** * 扩展底层数组的length,方便动态添加元素 * @param capacity */ private void grow(int capacity){ int newCapacity = capacity + (capacity >>1); elementData = Arrays.copyOf(elementData, newCapacity); } }