HashTable i pobranie klucza dla danej wartosci

0

Witam, nie wiem jak pobrac klucz z tablicy haszujacej jezeli znam wartosc, tzn. potrafie przejechac HT petla foreach i ona mi wszystko wypisze, ale nie umiem zrobic tak, ze podaje konkretna wartosc i otrzymuje klucz do ktorego jest ona przypisana.

Mam nadzieje, ze w miare jasno opisalem moj problem.

Pozdrawiam

0

Możesz otrzymać tablice kluczy i następnie ją przeszukać
ICollection MyKeys = MyTable.Keys
foreach (object Key in MyKeys)
{
if(MyTable[Key] == myValue);
//to cos tam
}


Sposób na głupiego, ale powinien rozwiązać problem
0

takie rozwiazanie jest oczywiste, ale myslalem, ze moze da sie bez przeszukiwania ht wyciagnac klucz po wartosci

0

No nie bardzo. W Hashtable wyszukuje sie wartosci po kluczu i wtedy ma ona sens - w druga strone dziala jak normalna tablica, wiec pozostaje normalne wyszukiwanie - w najbardziej ogolnym przypadku wlasnie takie jak podano.

0

Wyszukiwanie zawsze można z optymalizować, wykorzystac BinarySearch()

0

Pod warunkiem, ze posortowane :P Hashtable tez sluzy do optymalizacji wyszukiwania swoja droga :) Wiec jak bedziesz czesto tak szukal, to lepiej powiazac na krzyz - czyli 2 Hashtable i wartosci jednej to klucze w drugiej, itp.

0
johny_bravo napisał(a)

Pod warunkiem, ze posortowane :P
A miałem to napisać ;) co do drugiego służy jak ma duży rozmiar. korzystajac w C# z wbudowanej raczej nie ma się co martwić, jak ktoś sam pisze, to już może być gorzej, rozmiar, odpowiednio dobrane liczby pierwsze ;)

0

moja HT zawiera tylko kilka par klucz-wartosc, wiec przeszukanie jej nie stanowi problemu, chcialem jedynie sprawdzic, czy .NET w standardzie nie zapewnia przypdkiem takiego czegos

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0