動的膨張機構のArrayList

初期化:3つの方法があり
公共のArrayList(); 1.デフォルトコンストラクタは、アレイの内部のデフォルトのサイズに初期化される
2いるICollection構造を有するオブジェクト、及びセットArrayListに添加元素:公共のArrayList (コレクションC <E拡張?>)
3.内部の配列を初期化するために指定されたサイズで:公共のArrayList(int型InitialCapacityの値)

引数なしのコンストラクタのどのような実装プロセスにレッツ・フォーカス:
コードを通じてますが、その初期容量0 。しかしJDK1,6、10の初期容量の前に。

膨張条件が発生する:
着信minCapacityに最低必要な容量及び容量は、配列の長さ以上minCapactity容量を拡張するために必要とされる場合、配列を比較します。(ストレージアレイは、空の配列が実際にある場合に、最小の容量が既定の容量である必要)

:拡張を達成するために
、ビット操作>>右移動をJDK7を採用しました。1.5倍の容量と同等の拡大;
例:ArrayListの20に要素を追加する
だけ最初の分配要素10(デフォルト)オブジェクト空間に挿入されたとき。拡張後の1.5倍に成長します。
添加が初めてデータ11である場合、ArrayListの膨張は、10 * 15 = 1.5となる続け、
16個のデータの追加は、継続的な拡大は15 * 22 = 1.5になると、

要約:
でJDK1.7、言葉によって構成されるパラメータなし場合、0は、アレイが実際に追加される配列、実際に割り当てられた容量の初期容量です。
膨張copeOf方式の比で1.5倍(操作位置)でそれぞれ。
言葉によって構成されるパラメータなし場合JKD1.6において、方法によって各拡張copeOf後アレイ10の初期容量二重容量は、上記の原理は、動的拡張1.5 1でした。

おすすめ

転載: www.cnblogs.com/weigy/p/12573945.html