66

これらのいずれか (List、ArrayList、Dictionary、Hashtable、Stack、Queue を含む) を使用して、値を保持したり、他のオブジェクトへの参照をコレクションとして保持したりできます。

しかし、私の質問は、どちらがいつ使用されるのですか?

4

3 に答える 3

105

リスト

リストはアイテムの重複を許可し、インデックスによってアクセスでき、線形トラバーサルをサポートします。

  • ArrayList - ジェネリック型をサポートしない配列ベースのリスト。これはタイプ セーフを強制しないため、通常は避ける必要があります。

  • List - ジェネリック型をサポートし、型安全性を強制する配列リスト。連続していないため、リスト全体にメモリを再割り当てしなくてもサイズが大きくなる可能性があります。これは、より一般的に使用されるリスト コレクションです。

ハッシュ

ハッシュは、リスト内の各項目に、後で取得するために使用される「キー」を与えるルックアップです。ハッシュは、「この文字列値でこのオブジェクトを検索ます。重複キーは許可されていません。

  • HashTable - インデックス付きリストのように機能する基本的なキーと値のペアのマップ。

  • Dictionary - ジェネリック型をサポートし、型安全性を強化するハッシュテーブル。

キュー

キューは、リスト内の項目へのアクセス方法を制御します。通常、キューからレコードを特定の方向 (前方または後方) にプッシュ/ポップします。途中のランダムアクセスには使用しません。

  • スタック- レコードを互いの上にプッシュ/ポップする LIFO (後入れ先出し) リスト。

  • キュー- レコードを一番上にプッシュし、一番下からポップする FIFO (先入れ先出し) リスト。

于 2012-08-10T13:03:54.573 に答える
14
  • リストは重複したオブジェクトを保持できます

  • ArrayListは、IList が存在しなかった古いバージョンのフレームワークとの互換性のためだけのものです。

  • ディクショナリは、キーと値のペアを格納するために使用されます。重複したキーを持つことはできません。

  • Hashtableは基本的に、重複の可能性がないリストです (シナリオによってはパフォーマンスが向上します)。

  • スタックはオブジェクトを追加さ​​れた順に ( を介してPush()) 格納し、オブジェクトを取得すると ( を介してPop())、LIFO 方式でスタックから削除されます。

  • FIFOであることを除いて、スタックと非常によく似たキュー。

于 2012-08-10T13:05:21.980 に答える
3

それらのいくつかの用途を次に示します。

リスト:リストだけが必要で、重複を気にしない場合。つまり、人のリスト、買い物リスト、人生でやるべきことのリストなどです。

待ち行列: たとえば、病院で待ち行列をシミュレートする場合は、待ち行列と優先待ち行列 (救急部門) があります。トリアージは、誰が危篤状態にあり、治療が必要かを判断します。

もう 1 つの例はショッピング キューです。最初に並んだ人が「通常」最初にチェックアウトする人です。

スタック:関数/メソッドに値を渡すときに値をプッシュおよびポップするために内部メモリで使用されます。

もう 1 つの興味深い用途は、ビデオ ゲームのインベントリ メソッドで、アイテムをスタックにピックアップ (プッシュ) し、スタックからアイテムをドロップ (ポップ) できることです。

ハッシュ/辞書:これらは通常、検索とインデックスのためにデータベースで使用されます。

あなたがシミュレートしたいものに応じて、私は他の人に同意します。データ構造を読むと便利です。本は役に立ちますが、インターネットにも豊富な情報があります。

于 2012-08-10T13:17:04.177 に答える