2011-01-26 4 views
5

Я объявляю словарь следующим образом:Как найти минимальный ключ в словаре

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

И я использовал следующие:

touchDictionary[touchID] = touchObject;

Итак, touchDictionary сохранит ключ от touchID. Теперь я пытаюсь найти минимальный ключ, используя словарь, но я не знаю, как это сделать. Есть какое-нибудь предложение?

Regard, C.Porawat

+0

Не могли бы вы объяснить ваш случай использования здесь? Какая польза от знания мин? –

+1

Альтернативный способ сделать это - сохранить «текущее» минимальное значение и при каждом добавлении/удалении из словаря, проверить его и при необходимости обновить. Это остановит перечисление ключей. –

+2

Вы считали, что 'SortedList <,>' или 'SortedDictionary <,>' лучше подходит для вашей коллекции? http://msdn.microsoft.com/en-us/library/5z658b67.aspx – Ani

ответ

17

словарь имеет свойство Keys, которая позволяет перечислить ключи в словаре. Вы можете использовать методы расширения Min Linq для получения минимального ключа следующим образом:

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

И, к сожалению, операция O (n). Вы не получаете никаких преимуществ от наличия здесь словаря. –

+2

Возможно, ваш словарь может быть помещен в класс, который может содержать запись ключа min, используемого для ввода записей? –

+3

В исходном вопросе нет ничего, что указывало бы, что это чувствительная к производительности операция! – ColinE

0

Что-то вроде touchDictionary.Keys.Min(). Просто убедитесь, что вы импортируете пространство имен System.Linq.

Смежные вопросы