如同C语言中字符数组向String过渡一样,作为面向对象语言,自然而然的出现了由Object[]数据形成的集合。本文从JDK源码出发简单探讨一下ArrayList的几个重要方法。
ArrayList的源码重点在于: 1. 扩容的时候按照原容量的1.5倍扩容 2. 若需要的容量很大,可以通过ensureCapacity进行提前一步到位扩容,或者直接通过构造器声明一个大的ArrayList。 3. 对Object[]进行操作的时候都是通过System.arraycopy进行的,这是一个native方法,直接操作内存,等同于C语言中的底层方法。 4. 关于默认长度为什么是10,还不是很明白。按照StackOverFlow的说法是作为一个List长度没有必要是2的次幂。10不大不小,刚好够用(通过数据分析得到)。但是我仍然不理解为什么HashMap就要是2的次幂。等看完HashMap再来回答这个问题。
新闻热点
疑难解答