2011-01-26 21 views
5

Oświadczam słownika w następujący sposób:Jak znaleźć minimalną klucz w słowniku

private Dictionary<int, touchInformation> touchDictionary = new Dictionary<int, touchInformation>(); 

I wykorzystywane w następujący sposób:

touchDictionary[touchID] = touchObject;

Tak więc touchDictionary zachowa klucz z touchID. Teraz próbuję znaleźć minimalny klucz za pomocą słownika, ale nie wiem jak to zrobić. Masz jakieś sugestie?

względzie C.Porawat

+0

mógłbyś wyjaśnić swój przypadek użycia tutaj? Jaka jest korzyść ze znajomości min? –

+1

Alternatywnym sposobem wykonania tej czynności jest zapisanie minimalnej wartości "Bieżącej" oraz każdego dodania/usunięcia ze słownika, sprawdź to i zaktualizuj w razie potrzeby. Zatrzyma wyliczanie kluczy. –

+2

Czy zastanawiałeś się, czy 'SortedList <,>' lub 'SortedDictionary <,>' jest lepiej dopasowany do twojej kolekcji? http://msdn.microsoft.com/en-us/library/5z658b67.aspx – Ani

Odpowiedz

17

słownik ma właściwość Keys, który pozwala wyliczyć klucze w słowniku. Można użyć metody rozszerzenie Min LINQ uzyskać minimalną klucz następująco:

int minimumKey = touchDictionary.Keys.Min(); 
+3

I niestety jest to operacja O (n). Nie masz żadnej korzyści z posiadania słownika tutaj. –

+2

Może owinąć twój słownik w klasę, która może przechowywać zapis min klucz używany do dokonywania wpisów? –

+3

Nic w oryginalnym pytaniu nie wskazuje, że jest to operacja wrażliwa na wydajność! – ColinE

0

Coś touchDictionary.Keys.Min(). Po prostu upewnij się, że importujesz przestrzeń nazw System.Linq.

Powiązane problemy