2011-11-11 18 views
0

私は集合がどのようなものであり、集合、交差、差、サブセットのような集合に対する共通の操作を知っています。しかし、私はどのような状況が望ましい操作に基づいて設定されているのか分からないのですか?実際の例?リストやハッシュを使ってset対を使う利点は何ですか?もし私が2つのリストを持っているなら、私はそれらのリストの組合、交差点も見つけることができます。ではなぜSetsを使うのですか?セットとセットベースの操作の利点は何ですか?

編集 具体的には、リストの代わりにセットを使用する必要がある現実の状況を知りたいと思っています。

+0

なぜダウン票ですか?あなたが投票した場合は、コメントを提供してください – newbie

+0

よくある質問から:_実際に直面している問題に基づいて実用的で、答えることができる質問をお願いします._ –

+0

これは実用的な質問ではないと言いますか?私は自分のプログラムでデータ構造を扱っています。リストやハッシュやセットを使うべきかどうか疑問に思っていますか?そして、私もその答えることができると思うので、私はあなたの懸念を理解していません。 – newbie

答えて

3

Setには重複するオブジェクトはありません。 Listでは、リスト内に「等しい」オブジェクトが複数存在することはありません。何百万ものものがあなたが使うことができ、あなたの人生をはるかに簡単にします。たとえば、国のセット、ユーザー名のセットなどです。リストを使ってこれらのデータを保存する場合は、リストに重複が許可されていない限り、新しい要素を追加する前にリストに既に同じ要素が含まれているかどうかが確認されています。

つまり、setは重複のないリストと見なすことができます。しかし、SetとListのインタフェースは、Javaでは実際には同じではありません。たとえば、セットの特定の位置に要素を取得することはできません。これは、セット内での位置は重要ではないためです(ただし、リスト用です)。したがって、使用するデータ収集の選択は、その目的に完全に依存します。

私自身、多くの場合、Setは非常に便利であり、重複のチェックの量を減らすことがわかりました。私の使用事例の1つは、setを使用して、分子内にいくつの化学元素があるかを調べることです。分子には原子オブジェクトのリストが含まれており、各原子は要素記号に関連付けられているので、要素のタイプを見つけるために、すべての原子をループし、その要素を要素セットに追加します。すべての重複は手間をかけずに削除されます。

+0

ありがとう、私はそのような使用例を探していた、私は今それを得る。 – newbie

+0

ようこそ。 – gigadot

0

特に、セットはO(logN)のアクセス時間を保証します。また、(重複を追加しようとすると例外をスローすることによって)特定の値を持つエントリを1つだけ強制します。

ハッシュは通常、O(1)アクセスを提供しますが、一意性を保証するものではありません。

関連する問題