.NET SortedDictionary, но отсортированный по значениям

Мне нужна структура данных, которая действует как a SortedDictionary<int, double> но отсортирован на основе значений, а не ключей. Мне нужен он для взятия приблизительно 1-2 микросекунд, чтобы добавить и удалить объекты, когда у нас есть приблизительно 3 000 объектов в словаре.

Моя первая мысль состояла в том, чтобы просто переключить ключи и значения в моем коде. Это очень почти работает. Я могу добавить и удалить элементы приблизительно через 1,2 микросекунды в моем тестировании путем выполнения этого.

Но ключи должны быть уникальными в SortedDictionary так, чтобы средство, которое оценивает в моем обратном словаре, должно было бы быть уникальным. И существуют некоторые случаи, где они не могут быть.

Какие-либо идеи чего-то в библиотеках.NET уже, которые работали бы на меня?

6
задан Michael Covelli 11 April 2010 в 23:03
поделиться

2 ответа

В библиотеке PowerCollections есть класс под названием OrderedMultiDictionary , который в основном похож на SortedDictionary , но допускает дублирование. Когда вы ищите ключ, вы получаете перечислимое вместо одного значения.

Библиотека бесплатна, и вы должны иметь возможность делать с этим классом именно то, что хотите - сохранять значения как ключи.

1
ответ дан 17 December 2019 в 07:02
поделиться

Вы можете отсортировать SortedDictionary по значению следующим образом:

yourList.Sort(
    delegate(KeyValuePair<int, double> val1,
    KeyValuePair<int, double> val2)
    {
        return val1.Value.CompareTo(val2.Value);
    }
);
3
ответ дан 17 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

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