問題タブ [hashset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .NET:リスト内の一意性を効率的にチェックする方法50,000アイテムの?
一部のライブラリコードには、50,000個以上のアイテムを含むことができるリストがあります。
ライブラリの呼び出し元は、文字列がリストに追加される結果となるメソッドを呼び出すことができます。追加される文字列の一意性を効率的に確認するにはどうすればよいですか?
現在、文字列を追加する直前に、リスト全体をスキャンして、各文字列を追加する文字列と比較しています。これにより、10,000アイテムを超えるスケールの問題が表示され始めます。
これをベンチマークしますが、洞察に興味があります。
- List<>をDictionary<>に置き換えると、リストが10,000アイテム以上に増えるので、ContainsKey()はかなり速くなりますか?
- すべてのアイテムが追加されるまで一意性チェックを延期すると、より速くなりますか?その時点で、すべての要素を他のすべての要素と照合する必要がありますが、それでもn^^2操作です。
編集
いくつかの基本的なベンチマーク結果。FillとScanの2つのメソッドを公開する抽象クラスを作成しました。塗りつぶしは、コレクションをn個のアイテムで埋めるだけです(私は50,000を使用しました)。スキャンはリストをm回スキャンし(私は5000を使用しました)、指定された値が存在するかどうかを確認します。次に、そのクラスの実装をList用に、別のクラスをHashSet用に構築しました。
使用された文字列は、長さが均一に11文字であり、抽象クラスのメソッドを介してランダムに生成されました。
非常に基本的なマイクロベンチマーク。
したがって、その長さの文字列の場合、一意性をスキャンするとき、HashSetはListよりも約25倍高速です。また、このサイズのコレクションの場合、コレクションにアイテムを追加するときに、HashSetはリストに対してペナルティをゼロにします。
結果は興味深いものであり、有効ではありません。有効な結果を得るには、実装をランダムに選択して、ウォームアップ間隔、複数の試行を行う必要があります。しかし、それではバーが少ししか動かないだろうと私は確信しています。
みんな、ありがとう。
EDIT2
ランダム化と複数の試行を追加した後、この場合、HashSetは一貫してリストを約20倍上回っています。
これらの結果は、可変長の文字列、より複雑なオブジェクト、または異なるコレクションサイズには必ずしも当てはまりません。
java - Null ポインター例外: null エラー
このハッシュ セット コードがあり、それに対してコンパイル メソッドを実行しようとすると、Null Pointer Exception: null エラーが発生します。コードは次のとおりです。
このエラーに付随する他の行は次のとおりです。
java - Java HashMap keySet()の反復順序は一貫していますか?
MapのkeySet()メソッドから返されたSetは、特定の順序を保証するものではないことを理解しています。
私の質問は、複数の反復にわたって同じ順序を保証するかどうかです。例えば
上記のコードでは、マップが変更されていないと仮定すると、keySetsの反復は同じ順序になります。Sunのjdk15を使用すると、同じ順序で繰り返されますが、この動作に依存する前に、すべてのJDKが同じように動作するかどうかを知りたいと思います。
編集
答えから、私はそれに頼ることができないことがわかります。残念な。注文を保証するために新しいコレクションを作成する必要がないことを望んでいました。私のコードは、繰り返し処理し、いくつかのロジックを実行してから、同じ順序でもう一度繰り返し処理する必要がありました。順序を保証するkeySetから新しいArrayListを作成します。
java - HashMap での keySet() メソッドの使用
ボードで可能な状態を調べて HashMap に保存するメソッドがあります
}
キーのグループに興味があります。それらをすべて印刷するにはどうすればよいですか?
HashSet t = map.keySet()
コンパイラによって拒否されているだけでなく、
.net-3.5 - ハッシュセットの取得オブジェクト参照
HashSet<string>
文字列が存在することがわかっている場合、どのようにして効率的に文字列への参照を取得できますか?
すなわち
ありがとう!
fluent-nhibernate - Fluent NHibernate規則を使用して、すべてのICollectionをセットとしてマップすることは可能ですか?
Fluent NHibernate規則を使用して、すべてのICollectionをセットとしてマップすることは可能ですか?私はそのようなエンティティを持っています:
流暢なマッピングでは、このプロパティはとしてマッピングされHasMany(x => x.Animals).AsSet()
ますが、オートマッパーで使用したい規則を使用してこれを行うにはどうすればよいですか?
これをデフォルトで追加し、ICollections
として永続化する必要があります。ILists
にキャストしようとすると、キャスト例外が発生HashSet
しIList
ます。
c# - .NET で Hashtables/HashSets を使用するにはどうすればよいですか?
約 9000 個の製品のリストがあり、その中には重複している可能性があるものもあります。
重複を簡単に見つけられるように、製品のシリアル番号をキーとしてこれらの製品の HashTable を作成したかったのです。
C#/.NET で HashTable を使用するにはどうすればよいでしょうか? HashSet の方が適切でしょうか?
最終的には、次のようなリストが必要です。
キー シリアル: 11110 - 内容: Product1
キー シリアル: 11111 - 内容: Product3、Product6、Product7
キー シリアル: 11112 - 内容: Product4
キー シリアル: 11113 - 内容: Product8、Product9
そのため、すべての製品のリストがあり、それらはシリアル番号が重複している製品ごとにグループ化されています。これを行う「正しい」方法は何ですか?
java - HashSetのContainsメソッドをオーバーライドする
誰かがHashSetのcontains()メソッドをオーバーライドして、equals()の代わりに正規表現の一致を使用する方法を教えてもらえますか?
または、オーバーライドしない場合、正規表現パターンを使用するメソッドを追加するにはどうすればよいですか?基本的に、文字列を含むHashSetで正規表現を実行できるようにしたいので、正規表現を使用して部分文字列を照合する必要があります。
私の方法が適切でない場合は、他の人に提案してください。
ありがとうございました。:)
c# - HashSet を反復処理するための LINQ の賢い代替手段
.内に、使用している URL のホワイトリストがありますHashSet<string>
。url
ホワイトリスト内のアイテムのいずれかで始まるかどうかを確認しようとしています (そのようにする必要があります)。
編集:前の例は少し誤解を招きやすく、タイプミスがありました。既に yahoo.com のようなベース URL を持っています。ホワイトリストは単なるパスです。
LINQ (オブジェクト) でこのルックアップを行うよりエレガントな方法はありますか? リストは巨大ではないので、パフォーマンスは問題になりません。
c# - ハッシュセット<-私のコンピュータでは動作しませんでした
プログラムでHashSetを使用したい。
しかし、HashSetを宣言できませんでした。
私のコンピュータはMicrosoft.NetFrameWork3.5をインストールしました。
また、名前空間を宣言しました。(System.Collections.Genericを使用)
しかし、それはうまくいきませんでした。
この問題を解決するにはどうすればよいですか?
Visual Studio 2005(c#)とWindows7を使用しています。
ありがとう。