ArrayListには実現Listインタフェースの数のJavaクラスの集まりである、リストコレクションインタフェースの親です。ArrayListの表にシーケンステーブル線形データ構造の基礎となる、底部が動的に増加させることができる配列の長さです。Array配列の欠点を補うために多くの欠点、ArrayListのがあります。
出典:
1)一時オブジェクト[]のからelementData; 、アレイが下を指すために使用される配列への参照;プライベートint型のサイズは、素子サイズの各値を追加、削除、実際の要素のArrayListの数を示すために使用されて変更されます。
2)パブリッククラスのArrayList <E>はAbstractList <E>用具一覧<E>、ランダム・、Cloneableを、java.io.Serializableの{}の3つのインタフェースがない方法ではないに延びています。
3)アレイのデフォルトの長さ:新規のArrayListにJDK 1.7()>>>この(10);新規のArrayListにJDK 1.8()、0は、配列の長さです。第1膨張要素が追加されます。
4)配列が一杯になったときに、元のデフォルトの50%のすべての拡張、ビット単位を使用。
プライベート のボイドが成長(int型minCapacityに){ // オーバーフローを意識したコード int型 oldCapacity = elementData.length。 INT newCapacity = oldCapacity +(oldCapacity >> 1 )。 もし(newCapacity - minCapacityに<0 ) newCapacity = minCapacityに。 もし(newCapacity - MAX_ARRAY_SIZE> 0 ) newCapacity = hugeCapacity(minCapacityに)。 // minCapacityには通常に近い大きさにあるので、これは勝利です: からelementData = Arrays.copyOf(からelementData、newCapacity)。 }
拡張要素の50%が添加膨張要素の最小容量に、ストアに十分なスペースはない場合。
5)反復子();で内部クラスのArrayListを提供する:のような器具のhasNext()、next()メソッドとのITR実装イテレータ。
基本的な考え方:インデックス/ポインタ、最初の要素の最初の実装では、次の次の要素(時間)を指し、のhasNext()が同じサイズか否かを判定する。
長所と短所:
配列の長所と短所は、最速のインデックスクエリでのArrayList配列の長所と短所を決定する追加、削除要素は、非効率的なモバイル要素の数が多いです。、削除され、非効率性を追加するが、欠点も明らかです、; ArrayListのインデックスだけでなく、速いことで、クエリが、また、長さの動的な変化を達成します。リンゴと非効率的にリンゴを比較するために、コンテンツで検索。
要約すると、追加および削除操作を、より時間がArrayListの推奨されない。提案された使用ArrayListの動作要素を得るために、乱数に応じてインデックスをトラバースするとき。
ベクターは、ArrayListに、スレッドセーフな、低効率、100%のすべての拡張の初期バージョンです。
LinkedListの底が二重リスト、長所と短所の配列、およびちょうど反対リンクされています。