まず、配列
1.コンセプト
- アレイは、同じタイプを有するデータのセットを格納するための連続したメモリ空間内の線形リストのデータ構造です。
- リニア形式:配列、連結リスト、キュー、スタック、など
- 非線形テーブル:バイナリツリー、スタックなどの図。
2.連続したメモリ空間とデータの同じタイプ
- 利点:ファンランダム特性、ランダム・アクセス・Oの時間複雑度に応じて、(1)
- 短所:非効率的な挿入と削除
- 挿入:好ましくは、O(1)、最悪O(N)、平均O(N)であります
- 挿入:配列障害は、新しい要素を挿入する場合、最後までアレイのK番目の要素の位置を移動させることができる、新たな要素がK番目の位置に挿入され、この時の複雑さはO(1)
- 削除:好ましくは(1)、最悪O(N)、平均O(N)
- 一緒に複数の実行の削除、あなたはデータを記録することができますが削除されたが、データを移行していないが、保存した後、実際の削除を実行するためにこれ以上のスペースを見つけたときにのみ記録されています。また、思考に加えて、コアJVMガベージコレクションのアルゴリズムをマーク
3.配列または容器を使用
- 空間のアレイサイズは、例えば、指定しなければならず、容器(比較拡張は、メモリ消費量は、それが移動するアプリケーションとデータメモリを含むのでとき)ArrayListの動的拡張であってもよいです
- あなたは、基本的なデータ型を保存したい場合は、配列を使用することができ、基本的なタイプのコンテナは、基本的なラッパー型メモリ、保存することができないようにするときにボクシングとアンボクシングあろう損失性能
- データサイズの事前知識、および簡単な操作で、アレイを使用することができます
- 多次元配列の視覚的表現は、例えば、容器はArrayListの場合にのみ、[] []オブジェクトを使用することができます
; - 事業開発の一般的な使用容器、開発フレームワーク、パフォーマンスの追求、優先順位配列。
4.なぜ0アレイから番号付けされています
式のアドレスにより算出したメモリアドレスに格納された配列要素以来
a[i]_address = base_arress+i*data_type_size
配列は、カウントを開始するには、1からのものである場合、式がに変わります
a[i]_address = base_arress+(i-1)*data_type_size
CPUのために、より多くの命令を減算。もちろん、自分で行く、検索歴史的な理由があります。