Хорошо... вот вопрос о софтболе...
Я просто должен смочь вставить пару ключ/значение в объект в определенном положении. Я в настоящее время работаю с Хеш-таблицей, которая, конечно, не допускает эту функциональность. Каков был бы лучший подход?
ОБНОВЛЕНИЕ: Кроме того, мне действительно нужна способность к поиску ключом.
Например... упрощенный и псевдокодированный, но должен передать точку
// 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");
Заранее спасибо.
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 или любым другим типом, который вы хотите использовать ..
Изменить -
Для поиска по ключу, вы можете сделать следующее:
var result = stringList.Where(s => s == "Lookup");
Вы можете сделать это с KeyValuePair, выполнив следующие действия:
var result = kvpList.Where (kvp => kvp.Value == "Lookup");
Последнее изменение -
Сделал ответ для KeyValuePair, а не для строки.
Используйте связанный список. Он был разработан именно для этой ситуации.
Если вам все еще нужен поиск по словарю O (1), используйте и словарь, и связанный список.
Хэш-стимы не сортируются по своей сути, лучше всего использовать другую структуру, такую как SortedList или ArrayList
Нужно ли вам искать объекты по ключу? Если нет, рассмотрите возможность использования List
или List
, если вы не используете .NET 4.
Вы можете использовать OrderedDictionary, но я бы усомнился, зачем вам это нужно.
Я бы использовал Dictionary
(если каждый ключ уникален).
РЕДАКТИРОВАТЬ: Извините, я понял, что вы хотите добавить его в определенную позицию. Виноват. Вы можете использовать SortedDictionary , но это все равно не позволит вам вставить.