2012-02-16 8 views
1

Как сортировать хэш-таблицу по ключевым словам в C#.

Например.Сортировка Hashtable на основе ключа?

Hastable hst = new Hashtable(); 
hst.Add("Key1","keyValue"); 
hst.Add("Key2","keyValue"); 
hst.Add("Key3","keyValue"); 
+3

Понятие * сортировка * вряд ли имеет смысл для хэш-таблицы. –

+0

В чем же необходимость? –

+0

Возможный дубликат [C# Hashtable, отсортированный по ключам] (http://stackoverflow.com/questions/9280054/c-sharp-hashtable-sorted-by-keys) – GSerg

ответ

3

Если вам нужен отсортированный сильно типизированных хеш-таблицы, вы можете использовать SortedDictionary<TKey, TValue>

var hst = new SortedDictionary<string, string>(); 
hst.Add("Key1","keyValue"); 
hst.Add("Key2","keyValue"); 
hst.Add("Key3","keyValue"); 

Если вы хотите придерживаться Hashtable:

IEnumerable<DictionaryEntry> sortedEntries = hst.OrderBy(entry => entry.Key); 
1

Посмотрите на этот вопрос, ответ есть замечательные. Is it possible to sort a HashTable?

Hashtables работает, сопоставляя ключи со значениями. Неявным в этом сопоставлении является концепция, что ключи не сортируются или не сохраняются в каком-либо конкретном порядке. Тем не менее, вы можете взглянуть на SortedDictionary<K,V>.

Другой вариант - построить хеш-таблицу, как вы уже делали, а затем просто построить отсортированный набор из ключей. Вы можете выполнять итерацию через этот отсортированный набор ключей, получая соответствующее значение из хэш-таблицы по мере необходимости.

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