首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java源码解读——ArrayList(2)

2012-09-08 
Java源码解读——ArrayList(二)看了下ArrayList的源码,记录下自己的解读心得与体会。?ArrayList的自动变长机

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。

?

热点排行