ハッシュを使用する必要があるときと、配列を使用する方がよいときには、ちょっと手をつけようとしています。文字列の場合、ハッシュはどのような現実世界のオブジェクトを表しますか?ハッシュを使用して表現するものの実際の例は何ですか?
答えて
ハッシュを「辞書」と呼ぶこともありますが、それはそれ自体の良い例だと思います。
definition['pernicious']
代わりの定義がで保存されることを正しい数値インデックスを把握しようとしている:あなたが単語の定義を検索したい場合は、それだけのような何かをするうれしいです。
この回答は、「ハッシュ」によって基本的に連想配列を参照していることを前提としています。
ある変数を別の変数に関連付ける必要がある場合。ハッシュのキー/値になることができるものには「型の制限」はありません。
私は間違った方向に物事を見ていると思います。ハッシュを使用すべきかどうかを判断するオブジェクトではなく、アクセスする方法を決定します。ハッシュの一般的な使用は、ルックアップテーブルを使用する場合です。オブジェクトが文字列で、オブジェクトがDictionary
に存在するかどうかを確認したい場合は、O(1)によって(ハッシュが正常に動作していると仮定して)それらを検索します。並べ替えると、時間は代わりにO(logn)になりますが、これは受け入れられない可能性があります。
したがって、ハッシュは、彼らはまた、(パスワードの)オブジェクト自体を格納することなく、オブジェクトを表現する有用な方法である
等、辞書(ハッシュマップ)、セット(hashsets)で使用するために理想的です。
1対1のマップで十分に役立つデータがあればいつでも例えば
、クラスの成績:
"ジョン・スミス" => "B +"
"ヤコブJenkens" => "C"
など
電話帳 - キー=名前、値=電話番号。
私は古いWorld Book Encyclopedia(実際の本)も考えています。各記事は1冊の書籍に "ハッシュ"されています(猫は "C"の音量で表示されます)。
ハッシュドには多くの用途があります。暗号の使用以外にも、情報のクイックルックアップによく使用されます。配列を使って同様のクイックルックアップを取得するには、配列をソートしたままにして、バイナリ検索を使用する必要があります。ハッシュを使用すると、ソートすることなく高速検索ができます。これは、ほとんどのスクリプティング言語が1つの名前または別のもの(辞書など)でハッシングを実装する理由です。
一般的にハッシュを使用して高速検索ができます。ハッシュマップを使用して別の高速化を行うことができます。ハッシュセットは単に「高速」に格納されます。
ハッシュコンテナや通常のコンテナよりも使用する方が良いかどうかを検討するときには、ハッシュ関数の複雑さとコストを考慮してください。ハッシュ値の追加サイズと「完全な」ハッシュを計算するのに必要な時間ハッシュ関数の競合の場合、最終的に1:1の比較を行うのに必要な時間は実際にはそれほど大きくなく、より少ない演算子を使用してログハリティの複雑さを持つツリー構造を通過するだけかもしれません。
私は、自分のアプリの設定の「辞書」としてよく使います。
設定|値
データベースまたは設定ファイルから、私のアプリケーションで使用するためにハッシュテーブルにロードします。
うまく動作し、シンプルです。
地域、都市または任意の郵便住所に関連付けられた郵便番号が1つの例として挙げられます。
良い例は、要素がロットされたキャッシュです。ある値を調べたい(たとえば、URLとキャッシュされたウェブページを探したい)アイデアがあります。これらのルックアップはできるだけ高速にしたいし、URLが要求されるたびにすべての保存されたページを検索する必要はありません。ハッシュテーブルは、このような問題に対する優れたデータ構造です。
私が書いた1つの実例は、経費報告書を提出するときに人々が食事に費やした金額を合計したときです。
特定の日に何個のアイテムが存在するのか分からず、経費レポートの日付範囲がどうなっているのか分からず、日々の合計を得る必要がありました。どの人が多くの変数(どのような都市、週末など)を費やすことができるかに関する制限があります。
ハッシュテーブルはこれを処理するのに最適なツールでした。キーは、値が受領額(USDに換算)であった日付でした。領収書はどんな順序でも来ることができます。私はその日の価値を得続け、仕事が終わるまでそれを追加します。表示も簡単でした。
(PHPコード)
$david = new stdclass();
$david->name = "david";
$david->age = 12;
$david->id = 1;
$david->title = "manager";
$joe = new stdclass();
$joe->name = "joe";
$joe->age = 17;
$joe->id = 2;
$joe->title = "employee";
// option 1: lets put users by index
$users[] = $david;
$users[] = $joe;
// option 2: lets put users by title
$users[$david->title] = $david;
$users[$joe->title] = $joe;
今の質問:マネージャはありますか? 答え:
$users["manager"]
- 1. StringBufferを使用する実際の例は何ですか?
- 2. JUnit 5 @EnumSourceの実際の使用例は何ですか?
- 3. カレーの実際の使用例は何ですか?
- 4. マジックビットボードムーブジェネレーションシステムの最も実用的なボード表現は何ですか?
- 5. ソフトウェアで使用されるデザインパターンの実際の例は何ですか
- 6. Python。この表現は実際に何をしていますか?
- 7. minikubeを使用する実際の方法は何ですか?
- 8. ASP.NET 4.0のSetSessionStateBehaviorメソッドの実際の例は何ですか?
- 9. Vim、実際の使用例
- 10. Pythonの正規表現、ドットを何度も使用する
- 11. CORBAの実際の例は何ですか?
- 12. この正規表現は何を実現しますか?
- 13. ビルダーデザインパターンの実際の使用は何ですか?
- 14. あなたは塩としてハッシュしているもののハッシュを使用していますか?
- 15. 実際にフィルタを適用するのは何ですか?
- 16. JavaScriptで特性をも使用するOOPの良い例は何ですか?
- 17. 実際にJavaScriptでサンドボックス化されているものは何ですか?
- 18. 誰も実際にBig-O表記を使用していますか?
- 19. ワイルドカードを使用した課題の実際のアプリケーションとは何ですか?
- 20. zeromqの使用例は何ですか?
- 21. OWLの使用例は何ですか?
- 22. JavaScriptストリームの実際の使用例
- 23. キャスティングオペレータの実際の使用例
- 24. Cコーディングトレーニングの実際の使用例
- 25. RxJavaの実際の使用例件名
- 26. djangoとmemcached - 実際にキャッシュされているものは何ですか?
- 27. 実際に使用されるルータバインディングとは何ですか
- 28. 実際に使用される「ピクルス」とは何ですか?
- 29. これはemberJSフレームワークで実際に表現されているものですか?
- 30. NIOでUDPを使用する際のポイントは何ですか?
これは私が言うつもりです!あなたはそれに私を打つ –
本当に、ハッシュのポイントは、オブジェクトをより速く見上げることです。そのハッシュされたオブジェクトが別のオブジェクトに関連付けられている場合、それは素晴らしい(おそらく最も一般的な状況です)。 C++のhash_set(http://www.sgi.com/tech/stl/hash_set.html) – Brian
これは本当の現実の例ではないと思います。辞書を見ている人間は補間検索を使用します。物理的な辞書は単語を見つけるO(1)方法を持っていません。 –