package arraylist; import java.util.Arrays; import base.List; public class ArrayList implements List { public static void main(String[] args) { ArrayList arr = new ArrayList(); System.out.println(arr.size()); arr.add("ele1"); arr.add("ele2"); for (int i = 0; i < arr.size(); i++) { System.out.println((String)arr.get(i)); } System.out.println("============"); arr.remove(0); for (int i = 0; i < arr.size(); i++) { System.out.println((String)arr.get(i)); } } // 初始容量 static final int DEFAULT_INITIAL_CAPACITY = 10; // 数组扩展速度 static final int INCRE_SPEED = 2; // 元素数组 private Object[] elementData = new Object[DEFAULT_INITIAL_CAPACITY]; // 元素数量 private int size = 0; /** * 添加元素到指定位置 */ public void add(int index, Object obj) { add(elementData[size-1]); for (int i = size - 1; i > index; i--) { elementData[i] = elementData[i - 1]; } elementData[index] = obj; } /** * 删除指定位置的元素 */ public Object remove(int index) { Object result = elementData[index]; while (index < size) { elementData[index] = elementData[index + 1]; index++; } size--; return result; } /** * 获取指定位置的元素 */ public Object get(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException("Index: "+index); } return elementData[index]; } /** * 获取当前元素数量 */ public int size() { return size; } /** * 添加元素到尾部 */ public void add(Object obj) { elementData[size++] = obj; if (size == elementData.length) { resize(); } } /** * 元素数组自动扩展 */ private void resize() { elementData = Arrays.copyOf(elementData, elementData.length * INCRE_SPEED); } }