每日读源码(3)
2016-12-03 本文已影响34人
JUNE言JUNE语
还是ArrayList,看来读源代码是一件工程量很大的事情
先来个简单的方法,clear()
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
clear 可能会涉及到一点GC的知识,在java里面,正常情况下,当某个实例没有任何引用指向他,那么该实例就会被GC掉。所以clear方法只需要把数组所有的引用设置成null即可。
addAll()
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;
}
这也是一个平时比较少用到的一个方法,这应该跟直接使用一个collection的实例,比如list,set等来初始化list一样,只不过addAll是用来增加,在原来就已经有了一些元素(0个或者0个以上)的list上添加一个集合的所有元素进去。
基本上一些常用的接口到这里就都介绍了,其他的一些私有的方法平时也比较少用,在这里就不继续看了。
每天看一点源代码,幸福生活每一天。