自定义ArrayList
public class MyArrayList<E> implements Serializable
{
private static final long serialVersionUID = -5179259308804963168L;
private int size;
private static final int DEFAULT_CAPACITY = 10;
private Object elementData [];
private static Object [] EMPTY_ELEMENTDATA = {};
public MyArrayList()
{
elementData = EMPTY_ELEMENTDATA;
}
public MyArrayList(int size)
{
if (size < 0) {
throw new IllegalArgumentException("Illegal Argument "+size);
}
elementData = new Object[size];
}
public boolean add(Object obj) {
ensureCapacityInternal(size + 1);
elementData[size++] = obj;
return true;
}
public int size() {
return size;
}
private void ensureCapacityInternal(int minCapacity)
{
if (elementData == EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}
if (elementData.length < minCapacity) {
elementData = Arrays.copyOf(elementData, minCapacity);
}
}
public E get(int index) {
if (index > elementData.length - 1 || index < 0) {
throw new IllegalArgumentException("Illegal Argument "+index);
}
return elementData(index);
}
@SuppressWarnings("unchecked")
E elementData(int index) {
return (E) elementData[index];
}
public E remove(int index) {
if (index >= elementData.length) {
throw new IndexOutOfBoundsException();
}
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null;
return oldValue;
}
public String toString()
{
if (this.size == 0) {
return "[]";
} else {
StringBuffer st = new StringBuffer("[");
for (int i =0 ;i< this.size;i++) {
if (i== size-1) {
st.append(elementData[i]).append("]");
}else {
st.append(elementData[i]).append(",");
}
}
return String.valueOf(st);
}
}
}