我想知道是否有任何可能的方式使用與實際密鑰相同的密鑰,但使用不同的對象從哈希表中檢索項目。我明白爲什麼它可能是不可能的,但我想看看是否有任何棘手的方法來做到這一點。用哈希表的密鑰克隆從哈希表中檢索值; C#
我的問題來自於這樣一個事實,就像我一樣愚蠢,我創建了帶int []作爲鍵的哈希表,整數數組包含表示空間位置的索引。我不知何故知道每次我想添加一個新條目時都需要創建一個新的int [],但是忽略了當我生成空間座標數組後,他們將無法從我的哈希表中檢索值。
現在我正在嘗試決定是否重新排列一些東西,以便我可以將值存儲在ArrayLists中,或者每次我想要獲取值時是否通過Hashtable中的鍵列表搜索我需要的值,這兩個選項都不是很酷。
當然,除非// 2有辦法讓// 1像// 2一樣工作!
在此先感謝。
static void Main(string[] args)
{
Hashtable dog = new Hashtable();
//1
int[] man = new int[] { 5 };
dog.Add(man, "hello");
int[] cat = new int[] { 5 };
Console.WriteLine(dog.ContainsKey(cat)); //false
//2
int boy = 5;
dog.Add(boy, "wtf");
int kitten = 5;
Console.WriteLine(dog.ContainsKey(kitten)); //true;
}
看來你的設計出了問題...... – 2010-03-18 02:32:49
@Hamish Grubijan,你爲什麼這麼說?使用新創建但在其他方面相同的密鑰實例時,在「哈希表」中查找值有什麼問題?這是一種常見的情況,在.NET中得到很好的支持。 – 2010-03-18 02:43:38
@Sam,設計的問題是使用不提供值相等語義的鍵。散列表的一個理想的關鍵將1)是不可變的2)覆蓋等於和3)重寫gethashcode。陣列不符合這些標準。 – Josh 2010-03-18 02:52:21