何のデータ構造のためにこのメモリーのルックアップテーブルは?
-
22-07-2019 - |
質問
いく必要があるルックアップテーブルとしてインスタンス加盟した。の表時に初期化されるオブジェクトを構築します。それぞれの"ら"行って3つの"柱":
StringKey (e.g., "car")
EnumKey (e.g., LookupKeys.Car)
Value (e.g, "Ths is a car.")
私たちのデータ構造にすることを用いてルックアップのいずれかのStringKey または のEnumKey.
なく有する2つの鍵の同じ辞書の値です。ないかと思いましたことが、いかに規範がこのタイプのものです。
そのKey/Value/Value構造の代わりにキーとキーと値がったどのようなパフォーマンスへの影響いています。
思考えることすべてが悪いのでしょうか。
解決
いつhashmaps.
一からStringKey。
一からEnumKey。
い重複すべての値の場合、それらのオブジェクトを交換することが可能にhashmaps.
場でのコミュニケーションも楽しみの項目をするために利用treemapsはhashmaps.ではなく、その本質的原理("共有の価値")の両方に適用される。ですから、一つの価値観につ。
他のヒント
しかし---"誤り"は厳しい言い方ですね。いの辞書は"シングルキー値"は、多くの努力が提供する効率的なデータ構造(図)、それは多くの場合、最もれているのでしょう、共有のメモリに値します。
るなんて本当に必要なキーを同じ構造の両方の種類ーション-キーとは何ですか。なのかを再構築の複雑なデータ構造です。なにができるかのような封止のためのルックアップテーブルになってルックアップテーブルメモリがないのが課題です。を使用できるこの封止構造を再現できることをコンセントから抜き価値からは"同じ"の構造をどちらのタイプの鍵となる。
または
がある場合に、地図の列挙型値の文字列のキーだったルートとタールックアップ。
LINQのILookup(TKey,TElement)インターフェースがあります。とお辞書のようなもの:
Dictionary<carKey, carValue> cars;
ご利用可能:
ILookUp<carValue, carKey> lookup = cars.ToLookup(x => x.Value, x => x.Key);
(...実は私が若干へのリモーに質問がILookUpもに、そのキーと値に設定しながら身につけることが必要ですenum.)
すべての価値はあなたのホームページ<url>で公開されます。両タイプのキーをもうつの鍵タイプです。例えば:
public Value getValue(String key)
{
dictionary.get(key); // normal way
}
public Value getValue(Enum enumKey)
{
String realKey = toKey(enumKey);
getValue(realKey); // use String key
}
きておEnumの実装toKey()メソッドを返しますそのString key,って他の辞書と地図に列挙値の文字列ます。