每日读源码(3)

还是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 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上添加一个集合的所有元素进去。

基本上一些常用的接口到这里就都介绍了,其他的一些私有的方法平时也比较少用,在这里就不继续看了。

每天看一点源代码,幸福生活每一天。

你可能感兴趣的:(每日读源码(3))