Как вставить элемент в объект пары ключ / значение?



ОК...вот вопрос по софтболу...



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



обновление: кроме того, мне нужна возможность поиска по ключу.



например...упрощенный и псевдокодированный, но должен передать точку



// 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");


спасибо продвижение.

643   7  

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

    Ничего не найдено.