共同学习Java源代码--数据结构--ArrayList类(五)
来源:互联网 发布:快快网络服务器怎么样 编辑:程序博客网 时间:2024/06/17 15:58
modCount++;
// clear to let GC do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
这个方法是清除所有元素的方法。首先modCount自增。
然后进入for循环遍历每个元素,将每个元素设为空。
最后将size设为0。
public boolean addAll(Collection<? extends E> c) {
Object[] a = c.toArray();
int numNew = a.length;
ensureCapacityInternal(size + numNew); // Increments modCount
System.arraycopy(a, 0, elementData, size, numNew);
size += numNew;
return numNew != 0;
}
这个方法是将参数中所有元素添加到本ArrayList中。首先将参数转换成数组。然后创建变量numNew赋值为参数转换的数组的长度。
然后调用之前的方法为底层数组扩容。
然后将参数转换后的数组拷贝到底层数组中。
然后size增加numNew个,最后返回numNew是否为0。
public boolean addAll(int index, Collection<? extends E> c) {
rangeCheckForAdd(index);
Object[] a = c.toArray();
int numNew = a.length;
ensureCapacityInternal(size + numNew); // Increments modCount
int numMoved = size - index;
if (numMoved > 0)
System.arraycopy(elementData, index, elementData, index + numNew,
numMoved);
System.arraycopy(a, 0, elementData, index, numNew);
size += numNew;
return numNew != 0;
}
这个方法是将参数中的集合添加到指定下标处的方法。
首先先检查下标是否越界。
然后将参数集合转换成数组。然后获取转换后的数组长度numNew。
然后调用之前的方法为底层数组扩容。
创建一个变量numMoved赋值为size减去index,含义就是底层数组index之后多少元素要右移。
然后将底层数组index之后的元素向右移,中间腾出参数长度个元素。
然后将参数转换后的数组填充进底层数组。
size增加numNew个。最后返回numNew是否为0。
protected void removeRange(int fromIndex, int toIndex) {
modCount++;
int numMoved = size - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
// clear to let GC do its work
int newSize = size - (toIndex-fromIndex);
for (int i = newSize; i < size; i++) {
elementData[i] = null;
}
size = newSize;
}
这个方法是删除指定下标区间内元素的方法。
首先modCount自增。
然后创建变量numMoved,其值为size减去第二个参数。
然后将第二个参数下标处之后的元素全部移动到第一个参数下标处。
然后创建新变量newSize,其值为size减去两个参数之差,就是新长度。
进入for循环将newSize下标处之后的元素全部置空。最后将size设为newSize。
- 共同学习Java源代码--数据结构--ArrayList类(五)
- 共同学习Java源代码--数据结构--ArrayList类(一)
- 共同学习Java源代码--数据结构--ArrayList类(二)
- 共同学习Java源代码--数据结构--ArrayList类(三)
- 共同学习Java源代码--数据结构--ArrayList类(四)
- 共同学习Java源代码--数据结构--ArrayList类(六)
- 共同学习Java源代码--数据结构--ArrayList类(七)
- 共同学习Java源代码--数据结构--ArrayList类(八)
- 共同学习Java源代码-数据结构-HashMap(五)
- 共同学习Java源代码-数据结构-LinkedHashMap(五)
- 共同学习Java源代码--数据结构--AbstractList抽象类(五)
- 共同学习Java源代码--数据结构--LinkedList类(五)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(五)
- 共同学习Java源代码--数据结构--AbstractSequentialList类
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(五)
- 共同学习Java源代码--数据结构--AbstractCollection抽象类(一)
- 共同学习Java源代码--数据结构--AbstractCollection抽象类(二)
- 共同学习Java源代码--数据结构--AbstractList抽象类(一)
- UESTC 1253 阿里巴巴和n个大盗(博弈)
- C++中的文件结束符
- svn 清理失败 (cleanup 失败) 的解决方法
- 《Python基础教程》学习笔记 Chap2 列表和元组
- 从冒泡排序说起
- 共同学习Java源代码--数据结构--ArrayList类(五)
- 第十三周--分数类中的运算符重载
- Spring学习(五)Spring开发包介绍
- Java 数组 foreach
- mybatis架构介绍
- GEEK编程练习— —三数求和
- c++实验6数组合并
- DirectFB 之 字体显示
- 30学习写论坛-5