package com.list;
//ArrayList
public class ArrayList {
private int size;
private Object [] elementData = new Object[10];
public boolean add(Object data){
getRow(size+1);
elementData[size++] = data;
return true;
}
public boolean add(int index, Object data){
if (index < 0 || index > elementData.length){
throw new IndexOutOfBoundsException("�±�Խ��");
}
getRow(size + 1);
Object object = elementData [index];
System.arraycopy(elementData, index,elementData , index + 1,size - index );
elementData[index] = data;
size++;
return true;
}
public Object get(int index){
if (index < 0 || index > elementData.length){
throw new IndexOutOfBoundsException("下标越界");
}
return elementData[index];
}
public Object remove(int index){
if (index < 0 || index > elementData.length){
throw new IndexOutOfBoundsException("下标越界");
}
Object object = elementData [index];
System.arraycopy(elementData, index + 1 , elementData, index, size - 1 - index);
elementData[size--]= null;
return object;
}
private void getRow(int num){
if (num > elementData.length ){
int oldLength = elementData.length;
int newLength = ((num + elementData.length) * 3) >> 2;
Object [] oldelements = elementData;
elementData = new Object[newLength];
System.arraycopy(oldelements, 0, elementData, 0, size);
}
}
public int size(){
return size;
}
public int length(){
return elementData.length;
}
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
list.add("I");
list.add("J");
list.add("K");
list.add("L");
list.add(2, 1);
System.out.println("elementsData.Length: "+list.length());
System.out.println("elementsData.size: "+list.size());
for (int i = 0; i < list.size; i++){
System.out.print(list.get(i)+ " ");
}
System.out.println(" ");
list.remove(2);
for (int i = 0; i < list.size; i++){
System.out.print(list.get(i)+ " ");
}
}
}