Получение i-го значения из SortedList или SortedDictionary

У меня есть отсортированная коллекция объектов (она может быть либо SortedList, либо SortedDictionary, я буду использовать ее в основном для чтения, поэтому добавление производительности не так важно). Как я могу получить i-ое значение?

Так, например, когда у меня есть числа 1, 2, 3, 4, 5 в коллекции, и я хочу медиану (так что 3 в этом примере), как я могу это сделать?

Ответ 1

Попробуйте что-то вроде этого:

list.Values ​​[list.Count/2];

Обратите внимание, что истинная медиана будет усреднять два числа в середине, если граф четный.

Ответ 2

Вы можете использовать код как

list.Values[index] 

для отсортированного списка.

Самый простой способ использования SortedDictonary - использовать метод ElementAt():

dict.ElementAt(index).Value

Однако это медленнее, чем в случае со списком.

В любом случае вам нужно проверить свой счет. Если это нечетно, возьмите index = (list.length-1)/2). Если оно четное, возьмите index1 = list.length/2 И index2 = list.length/2 - 1 и усредните значения.

Ответ 3

Вы можете извлечь значение в определенной позиции, используя следующий синтаксис:

sortedDictionaryName.ElementAt(index);

Если вы хотите извлечь ключ или значение элемента с нужным индексом:

sortedDictionaryName.ElementAt(index).Key //For only Key
sortedDictionaryName.ElementAt(index).Value //For only Value

Ответ 4

Если вам нужно получить элемент по индексу в SortedDictionary много раз, производительность невыносима. Создайте новый SortedList с SortedDictionary в качестве входных данных и получите доступ к SortedList. Работает много, много раз быстрее.