Как вставить элемент в объект пары ключ / значение?
ОК...вот вопрос по софтболу...
Мне просто нужно, чтобы иметь возможность вставить пару ключ/значение в объект в определенной позиции. В настоящее время я работаю с хэш-таблицей, которая, конечно же, не позволяет использовать эту функциональность. Каков будет наилучший подход?
обновление: кроме того, мне нужна возможность поиска по ключу.
например...упрощенный и псевдокодированный, но должен передать точку
// existing Hashtable
myHashtable.Add("somekey1", "somevalue1");
myHashtable.Add("somekey2", "somevalue2");
myHashtable.Add("somekey3", "somevalue3");
// Some other object that will allow me to insert a new key/value pair.
// Assume that this object has been populated with the above key/value pairs.
oSomeObject.Insert("newfirstkey","newfirstvalue");
спасибо продвижение.
7 ответов:
List<KeyValuePair<string, string>> kvpList = new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("Key1", "Value1"), new KeyValuePair<string, string>("Key2", "Value2"), new KeyValuePair<string, string>("Key3", "Value3"), }; kvpList.Insert(0, new KeyValuePair<string, string>("New Key 1", "New Value 1"));используя этот код:
foreach (KeyValuePair<string, string> kvp in kvpList) { Console.WriteLine(string.Format("Key: {0} Value: {1}", kvp.Key, kvp.Value); }ожидаемый результат должен быть:
Key: New Key 1 Value: New Value 1 Key: Key 1 Value: Value 1 Key: Key 2 Value: Value 2 Key: Key 3 Value: Value 3то же самое будет работать с KeyValuePair или любым другим типом, который вы хотите использовать..
Edit -
для поиска по ключу, вы можете сделать следующее:
var result = stringList.Where(s => s == "Lookup");вы можете сделать это с помощью KeyValuePair, выполнив следующие действия:
var result = kvpList.Where (kvp => kvp.Value == "Lookup");последнее редактирование -
сделал ответ конкретными в KeyValuePair, а не строку.
может быть OrderedDictonary поможет вам.
вам нужно искать объекты по ключ? Если нет, рассмотрите возможность использования
List<Tuple<string, string>>илиList<KeyValuePair<string, string>>Если вы не используете .NET 4.
вы могли бы использовать OrderedDictionary, но я бы спросил, почему вы хотите это сделать.
использовать связанный список. Он был разработан именно для этой ситуации.
Если вам все еще нужен словарь O(1), Используйте как словарь, так и связанный список.
хэш-таблицы не сортируются по своей сути, лучше всего использовать другую структуру, такую как SortedList или ArrayList
Я бы использовал
Dictionary<TKey, TValue>(пока каждый ключ уникален).EDIT: извините, понял, что вы хотели добавить его в определенную позицию. Моя ошибка. Вы могли бы использовать SortedDictionary но это все равно не позволяют вставить.
Comments