タグ付けされた質問 「hashtable」

プログラミングのハッシュテーブルは、ハッシュ関数を使用して、識別値(キー)を関連する値にマップするコレクションです。


11
JavaScriptで連想配列/ハッシュを行う方法
JavaScriptを使用して、C#で行うような方法で統計を保存する必要があります。 Dictionary<string, int> statistics; statistics["Foo"] = 10; statistics["Goo"] = statistics["Goo"] + 1; statistics.Add("Zoo", 1); JavaScriptのHashtableようなものはありDictionary<TKey, TValue>ますか? どうすればこのような方法で値を格納できますか?


14
ハッシュテーブルはどのように機能しますか?
ハッシュテーブルがどのように機能するかについての説明を探しています。 たとえば、私はそれがキーを受け取り、ハッシュを計算し(方法の説明を探しています)、ある種のモジュロを実行して、値が格納されている配列のどこにあるかを計算しますが、ここで私の知識が停止します。 誰かがプロセスを明確にできますか? 編集:ハッシュコードの計算方法については特に質問していませんが、ハッシュテーブルの動作の概要については質問します。

10
.NET HashTableとディクショナリ-ディクショナリを同じくらい高速にできますか?
辞書またはハッシュテーブルをいつ、なぜ使用するのかを理解しようとしています。私はここで少し検索を行ったところ、私が完全に同意するディクショナリの一般的な利点について話している人を見つけました。 しかし、私はまた、ディクショナリを読んだところ、オブジェクトが挿入された順序で返されるとは限りません。HashTableが行う場所。私が理解しているように、これによりHashTableが状況によってははるかに高速になる。 私の質問は本当に、それらの状況は何でしょうか?上記の仮定が間違っていますか?どちらを選択するのにどのような状況を使用できますか(はい、最後の1つは少しあいまいです)。

12
重複するキーがHashMapに入力されるとどうなりますか?
同じキーをHashMapのputメソッドに複数回渡した場合、元の値はどうなりますか?そして、値が繰り返される場合はどうなりますか?これに関するドキュメントは見つかりませんでした。 ケース1:キーの値を上書き Map mymap = new HashMap(); mymap.put("1","one"); mymap.put("1","not one"); mymap.put("1","surely not one"); System.out.println(mymap.get("1")); 我々が得ますsurely not one。 ケース2:重複する値 Map mymap = new HashMap(); mymap.put("1","one"); mymap.put("1","not one"); mymap.put("1","surely not one"); // The following line was added: mymap.put("1","one"); System.out.println(mymap.get("1")); 我々が得ますone。 しかし、他の値はどうなりますか?私は学生に基本を教えていましたが、これを尋ねられました。Map最後の値が参照されている(ただしメモリ内にある)バケットのようなものですか?
276 java  hashmap  hashtable 


15
文字列に適したハッシュ関数
文字列に適したハッシュ関数を考えています。そして、文字列の最初の5文字のUnicode値を合計するのは良い考えかもしれないと考えていました(5文字であると想定し、それ以外の場合は終了する場所で停止します)。それは良い考えでしょうか、それとも悪い考えですか? 私はこれをJavaで行っていますが、それが大きな違いをもたらすとは思いません。
160 java  hash  hashtable  hashcode 

6
__hash __()を実装するための正しい正しい方法は何ですか?
実装するための正しい方法は__hash__()何ですか? 私は、ハッシュコードを返す関数について話しています。この関数は、オブジェクトをハッシュテーブル(辞書)に挿入するために使用されます。 __hash__()整数を返し、オブジェクトをハッシュテーブルに「ビニング」するために使用されるので、返される整数の値は、一般的なデータに対して(衝突を最小限に抑えるために)均一に分散する必要があると想定しています。そのような値を取得するための良い習慣は何ですか?衝突は問題ですか?私の場合、int、float、stringを保持するコンテナクラスとして機能する小さなクラスがあります。

8
ハッシュテーブルとトライ(プレフィックスツリー)のどちらを選択するのですか?
したがって、ハッシュテーブルとプレフィックスツリーのどちらかを選択する必要がある場合、どちらを選択するかを決定する要因は何ですか。私自身の素朴な観点から、それは配列として保存されていないのでトライを使用するといくつかの余分なオーバーヘッドがあるように見えますが、実行時間の観点から(最長のキーが最長の英語の単語であると仮定)、それは本質的にOである可能性があります(1)(上限に関して)。多分最長の英語の単語は50文字ですか? ハッシュテーブルは、インデックスを取得するとすぐに参照されます。ただし、インデックスを取得するためにキーをハッシュすると、簡単に50ステップ近くかかる可能性があります。 誰かがこれについてより経験豊富な視点を教えてくれますか?ありがとう!

9
文字列のハッシュ関数
私はC言語でハッシュテーブルに取り組んでおり、文字列のハッシュ関数をテストしています。 私が試した最初の機能は、ASCIIコードを追加してモジュロ(%100)を使用することですが、データの最初のテストでは結果が良くありません。130ワードで40衝突です。 最終的な入力データには8 000ワードが含まれます(ファイル内の辞書ストアです)。ハッシュテーブルはint table [10000]として宣言され、txtファイル内の単語の位置を含みます。 最初の質問は、文字列のハッシュに最適なアルゴリズムはどれですか?そして、ハッシュテーブルのサイズを決定する方法は? 前もって感謝します ! :-)


8
ハッシュテーブルは本当にO(1)になるのでしょうか?
ハッシュテーブルがO(1)を達成できることは一般的な知識のようですが、それは私には意味がありませんでした。誰かがそれを説明できますか?頭に浮かぶ2つの状況を次に示します。 A. 値は、ハッシュテーブルのサイズよりも小さいintです。したがって、値は独自のハッシュであるため、ハッシュテーブルはありません。しかし、あったとしても、それはO(1)であり、それでも非効率的です。 B. 値のハッシュを計算する必要があります。この状況では、検索されるデータのサイズの順序はO(n)です。O(n)の作業を行った後、ルックアップはO(1)になるかもしれませんが、それでも私の目にはO(n)が出てきます。 また、完全なハッシュテーブルまたは大きなハッシュテーブルがない限り、バケットごとに複数のアイテムが存在する可能性があります。したがって、いずれにしても、ある時点で小さな線形検索に発展します。 ハッシュテーブルはすばらしいと思いますが、理論的なものでない限り、O(1)の指定はありません。 ウィキペディアのハッシュテーブルに関する記事は、常に一定のルックアップ時間を参照しており、ハッシュ関数のコストを完全に無視しています。それは本当に公正な措置ですか? 編集:私が学んだことを要約するには: ハッシュ関数はキーのすべての情報を使用する必要がないため、一定の時間になる可能性があり、十分に大きいテーブルは衝突を一定の時間に近づけることができるため、技術的には正しいです。 ハッシュ関数とテーブルサイズが衝突を最小限に抑えるように選択されている限り、一定の時間のハッシュ関数を使用しないことがよくあるので、時間が経つとうまくいきます。

8
C#の辞書キーとしてのタプル(または配列)
C#で辞書ルックアップテーブルを作成しようとしています。3タプルの値を1つの文字列に解決する必要があります。配列をキーとして使用しようとしましたが、うまくいきませんでした。他に何をすべきかわかりません。この時点で私はディクショナリのディクショナリのディクショナリを作成することを検討していますが、JavaScriptでそれを行う方法ですが、それはおそらく非常にきれいではありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.