重複を避けるためにSetでどのアルゴリズムが使用されていますか?
私も重複し、可能な場合は同じアルゴリズムの実装を回避するために使用されるアルゴリズムの名前であるだけでは何を知りたいです。重複を避けるためにどのアルゴリズムがSetで使用されていますか?
答えて
これはSet実装に依存します。 Setは、クラスを実装するメソッドと一般的な動作を定義する単なるインタフェースです。このクラスがどのようにエントリの一意性を保証するかは、このクラスの実装によって異なり、かなり異なる場合があります。
一部の実装では、バイナリ検索を使用して既存のエントリをすばやく見つけることができます。他のクラスは愚かであり、エントリが既に存在するかどうかを調べるためにすべてのエントリを反復処理します。
アルゴリズムが、ここで発見されました。 https://homepages.inf.ed.ac.uk/wadler/gj/doc/java.util.Set.html#add(A)
それは(任意のオペレーション)が既に存在しない場合、このセットに指定された要素を追加します。より正式には、(o == null?e == null:o.equals(e))のような要素eがセットに含まれていない場合、指定された要素oをセットに追加します。 Setに指定された要素がすでに含まれている場合、呼び出しはSetを変更しないままにします(falseを返します)。コンストラクタの制限と組み合わせて、Setには重複する要素が含まれないようにします。
オプションの部分は、前の部分を上書きしないことです。 (o == null?e == null:o.equals(e)) " –
私は修正されました、ありがとうございます。 –
HashSetの実装では、データとしてHashMapを持っています。
add(E e)がmap.put(e、DUMMY)を呼び出すのは、HashMap実装がキー一意性のためにobejct hashCode()メソッドとequals()メソッドに依存するため、前のものと等しくなります。
このセットの実装はここで見ることができます: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashSet.java
この回答は完全ではなく、完全ではありません。ハッシュコードだけではありません。 'hashCode()'と 'equals()'を見ます。ハッシュコードは一意のキーではないことに注意してください。異なるオブジェクトは同じハッシュコードを持つことがあります。 – Jesper
- 1. データベースで重複を避けるためにphpを使用するには?
- 2. db.ListPropertyは、重複するキーを避けるためにset()のように機能しますか?
- 3. テキストボックス数値が既に他のテキストボックスに挿入されています。重複を避けるために
- 4. Immutable.js Setに重複した値が含まれています
- 5. asp.netで重複を避けるにはどうすればいいですか?
- 6. SQLite3で重複データを避けるためにインデックスをカバー
- 7. material-uiオートコンプリートを使用して重複を避けるにはどうすればよいですか?
- 8. レコードの重複を避けるために、tableアダプターを使用して挿入したレコードをトラップするにはどうすればよいですか?
- 9. 重複を避けるにはどうすればいいですか?
- 10. 重複を避けるにはどうすればいいですか?
- 11. テストの重複を避けるにはどうすればよいですか?
- 12. ヘッダーファイルの重複を避けるにはどうすればよいですか?
- 13. GROUP_CONCATの重複を避けるにはどうすればよいですか?
- 14. Sass 3.2でプレースホルダーセレクターを使用して重複を避ける
- 15. グリッドビューの重複行を避けるためにC#コード
- 16. どのように重複を避けることができますか?
- 17. 重複したエントリを避けるためにrails3-jquery-autocompleteを使用しますか?
- 18. 重複した要求を避けるための分散キャッシング
- 19. MYSQL:重複を避けるためにパフォーマンス面で優れているSELECTまたはDELETE
- 20. ネットワークPOJOクラスとデータベースエンティティクラス、重複を避けるためにどのように
- 21. 重複を避けるためにSQL Serverクエリを2回書くのを避けるにはどうすればよいですか?
- 22. Railsは重複を避けるためにhas_many
- 23. display:inline-blockを使用して "重複"ボーダーを避けてください
- 24. コンテンツの重複を避けるためのSEOフレンドリーなURL
- 25. Mongodbを使用して重複を避ける方法C++
- 26. プルリクエストで重複したコミットを避けるためにrebaseする方法
- 27. SQLで重複を削除するために使用された内部クエリの重複を削除するにはどうすればよいですか?
- 28. n個の部分に均等に重み付けされたオブジェクトを配布するために使用できるアルゴリズムはどれですか?
- 29. REST APIによってプルされたデータの重複を避けるためのSplunk
- 30. LINQ - 避けるため、重複したエントリ
が、私は 'Set'サブクラスのコードで –
だけでダイビングを言うだろうか' Set'実装に依存...あなたはそこに論理を見つけるでしょう。 – AxelH
一歩を踏み出し、インタフェースとクラスの違いを把握し、[documentation](https://docs.oracle.com/javase/8/docs/api/java/util)に移動してください。 /Set.html)(必要な情報はすべてそこにあります)。 – Dukeling