package com.xiaol.study;
/**
* @Description TODO
* @date 创建时间:2017年3月4日 下午11:03:26
*/
public class ArrayList implements List {
// 记录有多少元素
private int size = 0;
// 存放元素的数组
private Object[] elementData = new Object[10];
// 添加元素
public void add(Object o) {
checkSizeAndGrow();
elementData[size++] = o;
}
// 检查数组容量大小,不足就扩容
private void checkSizeAndGrow() {
if (size >= elementData.length) {
Object[] oldData = elementData;
elementData = new Object[size * 2];
System.arraycopy(oldData, 0, elementData, 0, size);
}
}
// 在指定位置添加元素
public void add(int index, Object o) {
checkIndex(index);
checkSizeAndGrow();
// 把index位置的元素往后移一位
System.arraycopy(elementData, index, elementData, index + 1, size - index);
elementData[index] = o;
size++;
}
// 检查插入元素的位置是否非法
private void checkIndex(int index) {
if (index < 0 || index > size) {
throw new RuntimeException("参数非法");
}
}
// 获取指定位置元素
public Object get(int index) {
checkIndex(index);
return elementData[index];
}
// 移除指定位置元素
public Object remove(int index) {
checkIndex(index);
Object returnVal = elementData[index];
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1);
size--;
return returnVal;
}
// 获取ArrayList元素数量
public int size() {
return size;
}
// 获取迭代器
public Iterator iterator() {
return new ArrayListIterator();
}
// 尽量实现迭代器
private class ArrayListIterator implements Iterator {
ArrayList list = null;
@Override
public boolean hasNext() {
return false;
}
@Override
public Object next() {
return null;
}
public Object remove() {
return null;
}
}
}