Самый быстрый способ сопоставить словарь с массивом в C # - PullRequest
1 голос
/ 18 марта 2019

Какой самый быстрый способ преобразовать словарь с целочисленным индексом в массив, чтобы индекс массива был индексом словаря? Можно предположить, что словарь содержит все элементы от 0 до максимального ключа.

Пример:

dictionary[2] = z
dictionary[0] = x
dictionary[1] = y

После конвертации мне нужно:

array[0] = x
array[1] = y
array[2] = z

1 Ответ

2 голосов
/ 18 марта 2019

Если ключ / значение в словаре содержит индекс в массиве, в который вы хотите поместить значение, вы можете просто перебрать словарь и вставить значение в конкретный индекс.

Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
string[] arr = new string[keyValuePairs.Count];

foreach (KeyValuePair<int, string> item in keyValuePairs)
    arr[item.Key] = item.Value;

Если выиметь индексы, которые не увеличиваются равномерно, как подсказывает @TanvirArjel - сначала вы должны найти максимальный индекс, который будет означать замену второй строки следующим:

string[] arr = new string[keyValuePairs.Keys.Max() + 1];

В отношении скорости, всегда лучше использовать не ленивое программирование иопределите ваши типы .. вы получите меньшее увеличение производительности по сравнению с использованием vars при итерации (вспомогательный аргумент ниже).

Здесь есть отличная статья Microsoft здесь , сравнивающаяспособы итерации и их скорость по словарям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...