其内部原理是 数组
实现原理:
public class MyArrayList {
//存放元素的数组
private Object[] elementArray;
//集合中元素的真实数量
private int size;
/**
* 构造方法
* 默认创建一个长度为10的数组
*/
public MyArrayList(){
elementArray = new Object[10];
}
/**
* 新增
* 原始这个方法有一个boolean类型的返回值,简便手写代码,不做返回
* 1、判断数组容量是否满足
* 如果满足直接添加元素,不满足-->2
* 2、扩容数组,将原有数据复制到新数组中,再将数组重新赋值给属性中的数组
* 3、将元素添加到数组中
* @param obj 新增的元素
*/
public void add(Object obj){
if(size < elementArray.length){
elementArray[size++] = obj;
}else{
int newCapacity = elementArray.length + (elementArray.length >> 1);
Object[] newArray = new Object[newCapacity];
for(int i = 0; i < elementArray.length; i++){
newArray[i] = elementArray[i];
}
elementArray = newArray;
elementArray[size++] = obj;
}
}
/**
* 返回数组的长度
* 每次新增元素时,size都执行了++
* @return size
*/
public int size(){
return size;
}
/**
* 将集合转化成一个数组
* 创建一个长度为size的数组,将elementArray数组中的元素都复制到新数组中,然后返回
* @return 数组
*/
public Object[] toArray(){
Object[] result = new Object[size];
for(int i = 0; i < size; i++){
result[i] = elementArray[i];
}
return result;
}
/**
* 通过索引值获取元素
* @param index 索引
* @return 元素
*/
public Object get(int index){
return elementArray[index];
}
}