读书人

Java源码解读ArrayList(2)

发布时间: 2012-09-08 10:48:07 作者: rapoo

Java源码解读——ArrayList(二)

看了下ArrayList的源码,记录下自己的解读心得与体会。

?

ArrayList的自动变长机制

都知道ArrayList不像数组那样是定长的,然而ArrayList也使用了数组来保存数据,所以么,自然很关心是怎么实现变长的。

?

ArrayList通过ensureCapacityInternal(int minCapacity)方法实现自身容量的增加,在add()和addAll()方法里面都调用了改方法。

        public E next() {            checkForComodification();            int i = cursor;            if (i >= size)                throw new NoSuchElementException();            Object[] elementData = ArrayList.this.elementData;            if (i >= elementData.length)                throw new ConcurrentModificationException();            cursor = i + 1;            return (E) elementData[lastRet = i];        }        final void checkForComodification() {            if (modCount != expectedModCount)                throw new ConcurrentModificationException();        }

?Itr作为ArrayList的内部类,可以访问所有ArrayList的成员。理解了这一点,itr类的实现就容易理解了。

?

还有一个listIterator的迭代器,实现方式类似。

?

?

java的集合在平时开发中很常用,能够了解它们的内部实现,对开发带来很大的便利,也减少了不必要的BUG。

?

读书人网 >编程

热点推荐