[英].NET container for two-way conversion data?
我需要將轉換表包含在內存中以便快速訪問。 到目前為止,我使用的是簡單的Hashtable
其中的Key是內部代碼,而Value是保存外部代碼和其他元數據的對象。
現在我們需要進行反向查找,這意味着要基於外部代碼來獲取內部代碼。 我只能提出以下選擇:
容器正在延遲加載,因此選項1&2在最壞的情況下通常不會執行。
有人在想嗎? 請告訴我,有一個我可以使用的高效容器,我錯過了!
*編輯*
作為GC的框架,並接受我必須擁有兩個轉換數組(字典)這一事實,以下幾行代碼實際上意味着我僅在內存中存儲了一個對象,然后在兩個不同的情況下為其存儲了兩個指針哈希單元?
Dictionary<K1,V> forward;
Dictionary<K2,V> reverse;
//...
void Add(V myObject)
{
// myObject being the BLL object
forward.Add(myObject.InternalCode, myObject);
reverse.Add(myObject.ExternalCode, myObject);
}
Itamar。
構建一個自定義集合類,該類具有兩個內部哈希表(字典),每個方向上一個。
public BiHashTable<K, V>
{
private Dictionary<K, V> vals = new Dictionary<K, V>();
private Dictionary<V, K> keys = new Dictionary<V, K>();
public void Add(K key, V val)
{
vals.Add(key, val);
keys.Add(val, key);
}
public K this[v val] { get { return keys[val]; } }
public V this[K key] { get { return vals[key]; } }
// etc...
}
注意:這將是有問題的,因為K和V都是相同的類型,那么您需要使用不同的公式...
我寧願使用Dictionary<TKey, TValue>
兩個實例
它有利於代碼可讀性
您確定這本詞典是性能瓶頸嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.