SortedList, который просто принимает IComparable <T> - PullRequest
4 голосов
/ 09 июля 2009

У меня есть интерфейс IScriptItem, который реализует IComparable<IQueueItem>. На мой взгляд, было бы достаточно иметь IComparable элементов, чтобы что-то сортировать. Но все, что я могу найти, это словари, Hashtables и SortedLists, которые на самом деле являются SortedTrees.

Я ищу отсортированный общий список, который принимает IComparables. Я смотрю в неправильных местах?

Ответы [ 2 ]

3 голосов
/ 09 июля 2009

Если я правильно понимаю, вам нужно SortedCollection вместо различных SortedCollection , которые там есть.

В .NET 4 появился новый класс SortedSet<T>, который сохраняет свои элементы в порядке, но не допускает дублирования. В противном случае вам придется посмотреть на сторонние варианты, такие как упомянутый Мэттом Хауэллсом.

3 голосов
/ 09 июля 2009

Там нет ничего встроенного. У вас есть несколько вариантов:

  • Использовать SortedList с фиктивным TValue.
  • Используйте список или массив и при необходимости вызывайте List.Sort () или Array.Sort ().
  • Напишите свой собственный.
  • Использовать стороннюю библиотеку

В этом конкретном случае проверьте класс Wintellect PowerCollections OrderedBag, который использует красно-черное дерево внутри. Другие хорошие библиотеки бесплатных структур данных включают NGenerics и C5.

...