## ArrayList源码分析(三)
/**
* 增加方法
*/
/**
* 添加元素到当前集合的末尾
*
* @param e 要求是符合泛型约束的指定数据类型
* @return 添加成功返回true,否则返回false
*/
public boolean add(E e) {
return add(size, e);
}
/**
* 在底层数组的指定下标位置保存对应的元素
*
* @param index 指定下标位置,不能超出有效范围, 0<= index <= size
* @param e 符合泛型约束的数据类型
* @return 添加成功返回true,否则返回false。
*/
public boolean add(int index, E e) {
if (index < 0 || index > size) {
throw new ArrayIndexOutOfBoundsException(index);
}
ensureCapacity(size + 1);
for (int i = size; i > index ; i--) {
elements[i] = elements[i - 1];
}
elements[index] = e;
size += 1;
return true;
}
/*
addAll方法
1. 需要得到添加集合的元素内容,有效元素个数
2. 确认容量问题
3. size = srcSize + newSize
*/
/**
* 添加另一个集合到当前集合的末尾
*
* @param list MyArrayList类型,自定义ArrayList,要求存储元素和当前集合一致,或者
* 是其子类
* @return 添加成功返回true,添加失败返回false。
*/
public boolean addAll(MyArrayList<? extends E> list) {
Object[] array = list.toArray();
int newSize = array.length;
ensureCapacity(size + newSize);
for (int i = 0; i < newSize; i++) {
elements[i + size] = array[i];
}
size += newSize;
return true;
}
public boolean addAll(int index, MyArrayList<? extends E> list) {
Object[] array = list.toArray();
int newSize = array.length;
ensureCapacity(size + newSize);
for (int i = 0; i < newSize; i++) {
elements[i + size] = array[i];
}
size += newSize;
return true;
}
ArrayList源码分析(三)
最新推荐文章于 2024-10-06 20:16:20 发布