package com.lys.coding.week2.basic;
import java.util.Arrays;
public class ArrayList implements List{
private int size = 0;
private Object[] elementData = new Object[100];
@Override
public void add(Object o) {
//�ȼ�����������Ƿ����,������Ҫ����
if(size>=elementData.length){
int newLength = elementData.length*3/2+1;
Arrays.copyOf(elementData, newLength);
}
//������������������
elementData[size+1]=o;
//��������size��һ
size++;
}
@Override
public void add(int index, Object o) {
//�ȼ�����������Ƿ����,������Ҫ����
if(size>=elementData.length){
int newLength = elementData.length*3/2+1;
Arrays.copyOf(elementData, newLength);
}
if(index!=size-1){
//�ѵ�ǰ����index�������������Ų
System.arraycopy(elementData, index, elementData, index+1, size-index);
}
//��indexλ�÷�
elementData[index]=o;
//��������size��һ
size++;
}
@Override
public Object get(int index) {
//���index�Ƿ�Ƿ�
if(index>=size){
throw new IndexOutOfBoundsException("Index: "+index+",Size:"+size);
}else if(index<0){
throw new IllegalArgumentException("Index: "+index+",<0!");
}
return elementData[index];
}
@Override
public Object remove(int index) {
Object o = elementData[index];
//���index�Ƿ�Ƿ�
if(index>=size){
throw new IndexOutOfBoundsException("Index: "+index+",Size:"+size);
}else if(index<0){
throw new IllegalArgumentException("Index: "+index+",<0!");
}
if(size!=index+1){
//�ѵ�ǰindex�����������ǰŲ
System.arraycopy(elementData, index+1, elementData, index, size-index-1);
}
elementData[size]=null;
//��������size��һ
size--;
return o;
}
@Override
public int size() {
return size;
}
}