由数组实现的list,相当于ArrayList,简单起见,未实现为泛型。
public class MyArrayList {
private int[] array;
private int capacity; //容量
private int size; //实际填充的数值个数
private static final int DEFAULT_CAPACITY=16; //默认容量为16个
private static final String TAG = "MyArrayList";
public MyArrayList(){
capacity=DEFAULT_CAPACITY;
init();
}
public MyArrayList(int capacity){
this.capacity=capacity;
init();
}
private void init(){
array=new int[capacity];
size=0;
}
public int size(){
return size;
}
//添加元素到数组,如果size增长到充满了capacity,则另外建立一个2倍大的数组,将现有元素拷贝到新数组。然后在新数组继续添加新元素。
public void add(int num){
if(size>=capacity){
capacity*=2;
int[] new_array=new int[capacity];
System.arraycopy(array, 0, new_array, 0, size);
array=new_array;
Log.i(TAG,"扩容到"+capacity);
}
array[size++]=num;
}
public int get(int index){
if(index<0||index>size-1)
throw new IndexOutOfBoundsException();
return array[index];
}
//删除元素
public void remove(int index){
if(index<0||index>size-1)
throw new IndexOutOfBoundsException();
for(int i=index;i<size-1;i++){
array[i]=array[i+1];
}
size--;
}
//清空
public void clear(){
capacity=DEFAULT_CAPACITY;
array=new int[capacity];
size=0;
}
}