ArrayList的核心是以动态数组为存储结构。
class ArrayList<T>{
private int capability ;
private static final int defaultCapability = 8;
private int size = 0;
private Object[] array = null;
public ArrayList(final int n){
this.capability = n;
this.array = new Object[capability];
}
public ArrayList(){
this.capability = defaultCapability;
this.array = new Object[capability];
}
//添加数据
public void add(T data){
Object obj = (Object)data;
resizeArray();
array[size] = data;
size++;
}
public int size(){
return size;
}
public T get(int index){
if( index < 0 || index >= size)
return null;
return (T)array[index];
}
public T remove(int index){
T t = get(index);
if( t != null ){
for(int i = index; i < size-1; i++){
array[i] = array[i+1];
}
size --;
}
return t;
}
//当数据量为总容量的75%时重新设置数组的大小
private void resizeArray(){
if(size*4 > capability*3 ){
capability = capability *2;
Object[] result = new Object[capability];
System.arraycopy(array, 0, result, 0, size);
array = result;
}
}
}
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> arrays = new ArrayList<String>();
arrays.add("123");
arrays.add("124");
arrays.add("125");
arrays.remove(1);
//System.out.println(arrays.get(4));
for(int i =0 ;i< arrays.size(); i++)
System.out.println(arrays.get(i));
}
}