2012-04-04 7 views
7

質問がありましたが、私の授業では少し曖昧です。セットに重複要素がありますか?

The array of strings is regarded as a set, i.e. unordered. 

この配列から重複を削除する必要があるかどうかはわかりませんが、

私はグーグルで試したことがありますが、1つの場所で次のものと違うことが分かります。どんな助けもありがとう。

セット(数学)でウィキペディアから
+2

あなたが検索した参考資料は何ですか?私はセット要素が重複していると言っている人を見たいですか? –

+0

セットの実装はダミー値のハッシュとほぼ似ているため、Setはハッシュや辞書のキーと同じように重複する要素を持つことができませんでした。 –

答えて

6

A = {1,2,2,3,4,5,6,7、...}およびB = {1,2,3,4,5,6,7、...}の場合、Aの任意の要素はBにあり、Bの要素はA ==> Aにあり、AはBを含み、BはA ==> A = Bを含みます。もちろん、セットには重複要素があることもあります。重複要素を持つものは、重複要素がないものとまったく同じになります。

+2

セット宣言をセットデータ構造と混同しています。宣言に重複はありますが、構造自体はできません。 –

25

セットが明確に定義されたと明確なオブジェクトのコレクションです。

多分、混乱は、その要素が表示される方法に依存しないという事実から派生します。その要素が繰り返されているか再配置されていると、セットは同じままです。

私が知っているプログラミング言語は、その要素がすでにその要素に属している場合は要素をセットに入れませんし、既に存在する場合は要素を置き換えますが、重複は許されません。

プログラミング言語の例

私は異なるプログラミング言語でのいくつかの例を提供してみましょう。パイソンで

Pythonでセットは次のように定義される "ユニークな要素の順序なしコレクション"。 a = {1,2,2,3,4}のようなセットを宣言した場合、それはセットに一度だけ2を追加します。

print(a)を入力すると、出力は{1,2,3,4}になります。

ハスケルセットの挿入操作は次のように定義されているHaskellでは

:セットが既に指定された値に等しい要素を含む場合、「[...]、それが新しい値でに置換され"

let a = fromList([1,2,2,3,4])このように、aをメイン出力に印刷すると、[1,2,3,4]が表示されます。 Javaのセットで

のJava

のように定義されている: "重複要素が含まれていないコレクション"。その追加操作は次のように定義されます。 "指定された要素がまだ存在しない場合は、この要素をこの要素に追加します。[...]この要素には既に要素が含まれている場合、の呼び出しは、変更されません。"

Set<Integer> myInts = new HashSet<>(asList(1,2,2,3,4)); 
System.out.println(myInts); 

このコードは、他の例のように、ouput [1,2,3,4]です。

+0

ああ、ありがとう、私はそれらを削除したり、注文を変更するかどうかは関係ありません? – dev6546

+0

私の指摘は、要素が集合に属する回数を決定することにある集合の数学的性質がないことです。あなたがA = {1,2,2,3,4}を持っていれば、セットに何回出現したかにかかわらず、2∈Aで答えがイエスであるかどうかを尋ねることができます。 –

+0

@ルイス:要するに、セットは何かを注文することを意味するものではないので、それは疑問ではないはずです。確かに、あなたのセットの実装は、挿入の順番ですべてを保持するかもしれませんが、それはセットの定義で定義されていないかもしれません。 セットの有効な実装は、追加したいアイテムを単純に追加するものですが、アイテムを確認すると、すべての値(つまり個別の値)のみが返されます。 –

2

セットは単なる定義によって重複要素を持つことはできません。重複する要素を許可するための正しい構造はMultiset or Bagある:

数学

、マルチセット(または袋)セットとは異なり、多重集合の要素の複数のインスタンスを可能にする、一連の概念を一般化したものです。たとえば、{a、a、b}と{a、b}は同じ集合ではあるが、異なる複数の集合である。しかし、順序は重要ではないので、{a、a、b}と{a、b、a}は同じマルチセットです。プログラミング中

多重集合の非常に一般的かつ有用な例では、オブジェクトの値の集合である:

values({a: 1, b: 1}) //=> Multiset(1,1) 

ここで値は順不同であり、未だ例えばなるSet(1)に低減することができませんオブジェクトの値を反復処理します。

複数セットは、データベース内の重要なツールとなっている[18] [19] [20]:リンクされウィキペディアの記事(参照のためにそこを参照)から引用さらに

、。たとえば、データベースシステムでリレーションを実装するために、マルチセットがよく使用されます。マルチセットはコンピュータサイエンスにおいても重要な役割を果たします。

関連する問題