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

Хорошо... вот вопрос о софтболе...

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

ОБНОВЛЕНИЕ: Кроме того, мне действительно нужна способность к поиску ключом.

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

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

Заранее спасибо.

62
задан Clay 30 April 2010 в 14:57
поделиться

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 или любым другим типом, который вы хотите использовать ..

Изменить -

Для поиска по ключу, вы можете сделать следующее:

var result = stringList.Where(s => s == "Lookup");

Вы можете сделать это с KeyValuePair, выполнив следующие действия:

var result = kvpList.Where (kvp => kvp.Value == "Lookup");

Последнее изменение -

Сделал ответ для KeyValuePair, а не для строки.

117
ответ дан 24 November 2019 в 16:43
поделиться

Используйте связанный список. Он был разработан именно для этой ситуации.
Если вам все еще нужен поиск по словарю O (1), используйте и словарь, и связанный список.

2
ответ дан 24 November 2019 в 16:43
поделиться

Может быть, OrderedDictonary поможет вам.

5
ответ дан 24 November 2019 в 16:43
поделиться

Хэш-стимы не сортируются по своей сути, лучше всего использовать другую структуру, такую как SortedList или ArrayList

1
ответ дан 24 November 2019 в 16:43
поделиться

Нужно ли вам искать объекты по ключу? Если нет, рассмотрите возможность использования List> или List>, если вы не используете .NET 4.

3
ответ дан 24 November 2019 в 16:43
поделиться

Вы можете использовать OrderedDictionary, но я бы усомнился, зачем вам это нужно.

2
ответ дан 24 November 2019 в 16:43
поделиться

Я бы использовал Dictionary (если каждый ключ уникален).

РЕДАКТИРОВАТЬ: Извините, я понял, что вы хотите добавить его в определенную позицию. Виноват. Вы можете использовать SortedDictionary , но это все равно не позволит вам вставить.

0
ответ дан 24 November 2019 в 16:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: