一意のオブジェクト要素を格納するクラスを作成する必要があります。これらの要素を並べ替える必要はありませんが、一意である必要があります。
どのインターフェイスを使用すればよいかアドバイスをもらえますか? ある人から Set を使用できると提案され、別の人が Vector または List と言いました。今、私は完全に混乱しています:-(
一意のオブジェクト要素を格納するクラスを作成する必要があります。これらの要素を並べ替える必要はありませんが、一意である必要があります。
どのインターフェイスを使用すればよいかアドバイスをもらえますか? ある人から Set を使用できると提案され、別の人が Vector または List と言いました。今、私は完全に混乱しています:-(
Set
まさにあなたが探しているものです
Set<Integer> uniqueValues = new HashSet<Integer>();
uniqueValues.add(1);
uniqueValues.add(2);
uniqueValues.add(3);
uniqueValues.add(2);// will be ignored
Setのドキュメントから:
重複する要素を含まないコレクション。より正式には、セットには、e1.equals(e2) のような要素 e1 と e2 のペアが含まれず、最大でも 1 つの null 要素が含まれます。その名前が示すように、このインターフェイスは数学的集合の抽象化をモデル化します。
(私の強調)
これらのオブジェクトは、それらの等価性に影響を与えるために変更可能であってはならないことに注意してください。それ以外の場合は、オブジェクトを挿入してからequal()
、セット内の別のオブジェクトになるように変更できます。Set
オブジェクトが遡及的に一意性を強制するとは思いません。
まあ、HashSetのようなコレクションを設定する必要があります。以下の点に注意してください。
Set にオブジェクトが含まれるクラスにequalsメソッドを実装することを忘れないでください。
また、コレクションをバケットに均等に分割する適切なアルゴリズムでhashcodeメソッドを実装します。equals メソッドで考慮するオブジェクトの特定のプロパティを考慮に入れることで、それを行うことができます。
を使用する必要がありますSet
。ユニークなオブジェクトを格納するように設計されています。より正式には、セットには要素のペアe1
とe2
そのようなものは含まれずe1.equals(e2)
、最大でも 1 つの null 要素が含まれます。equals
これが、オブジェクトがコレクションに格納されるクラスにメソッドを実装することを覚えておく必要がある理由です。
一意のオブジェクトを格納するための set インターフェイスを使用します ....