Коллекция с доступом по индексу и с сортировкой - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. У меня возникла одна задача для решения которой мне нужна некая коллекция <key,value>, которая позволяет считывать\записывать значения по индексу и сортироваться по значению. Наиболее подходящая это Dictinary, но она не умеет сортировать по значению, и доступа по индексу нет.

Решение задачи: «Коллекция с доступом по индексу и с сортировкой»

textual
Листинг программы
static class Program
{
    private static void Main(string[] args)
    {
        MyDictionary<string,int> numbers = new MyDictionary<string, int>();
        numbers.Add("three",3);
        numbers.Add("two",2);
        numbers.Add("one",1);
        foreach (var e in numbers.OrderByValue())
        {
            Console.WriteLine(e.Key);
        }
        Console.WriteLine(numbers.GetValue(1));
        Console.ReadKey();
    }
}
 
public class MyDictionary<TKey,TValue> : Dictionary<TKey,TValue>
{
    public MyDictionary<TKey,TValue> OrderByValue()
    {
        return (MyDictionary<TKey, TValue>) this.OrderBy(pair => pair.Value)
            .ToDictionary(pair => pair.Key, pair => pair.Value);
    }
 
    public TValue GetValue(int index)
    {
        var enumerator = GetEnumerator();
        for (int i = -1; i < index; i++)
            if(!enumerator.MoveNext())
                throw new IndexOutOfRangeException();
        return enumerator.Current.Value;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы