異なるキーでハッシュテーブルを使用する必要があります。1つはキーの文字列として、もう1つは整数として。
整数の場合、キーを生成するために数値に対してハッシュ関数を実行するのはどれほど愚かですか?
つまり、ハッシュテーブルのキーとして使用する数値は常に異なり、重複はまったくありません。mod演算子を使用して、ハッシュテーブルサイズより下の値を「切り捨て」るだけでは不十分ですか?
それとももっと何かありますか?
整数キーが62、93、124、...である可能性が高く、ハッシュテーブルのサイズがたまたま31である場合を除いて、問題ありません。
整数ハッシュキーを受け入れるのに適した整数ハッシュ関数はどれですか?を参照してください。あなたがこれを心配するなら。
私たちの分野の多くの設計に関する質問と同様に、答えは「状況によって異なります」です。整数に対して一般的なハッシュアルゴリズムを実行するのが面倒な場合があります。特定の状況に基づいて、モジュラスが期待されるデータを均等に分散することを知っていて、パフォーマンスが非常に重要であり、このハッシュテーブルに頻繁にアクセスする必要がある場合は、ばかげています。これらの条件を除けば、さまざまな状況でうまく機能する一般的なハッシュアルゴリズムを使用するだけの非常に良い理由がいくつかあります。ほとんどの場合、それ以外の方法で行うのはばかげています。場合によっては、ハッシュテーブルを使用することは、そもそも愚かな選択です。
保存するデータの種類、保存する理由、パフォーマンスの重要性について詳しく教えていただければ、ハッシュテーブルを使用するよりも効果的なソリューションを紹介できる可能性があります。Javaや.NETのようなフレームワークには、高速で同じバケットへの数値のハッシュを回避するハッシュ関数があります。ほとんどの場合、デフォルトのハッシュメソッドを信頼します。
それは愚かではありません、それは完全に賢明です。整数は、一意の命名スキームの自然なシードです。私の関係熱狂者は、このようなことを言うと少し死んでしまいますが= D
私の意見では、それは愚かではありません。値が比較的少ない傾向がある場合は、最適なオプションではない可能性があります(この場合、プレーン配列を使用する方が適切な場合があります)。
モジュロ演算子を使用して、整数をハッシュサイズにハッシュします。
整数の場合、ソートされた配列を使用してバイナリ検索を行うのはどうですか?文字列については実際には同じですが、文字列ハッシュの方が安い場合があります