В C# существует ли отсортированный универсальный набор списка неуникального ключа?

Схема: функциональная - хвост рекурсивный

(define (factorial n)
  (define (fac-times n acc)
    (if (= n 0)
        acc
        (fac-times (- n 1) (* acc n))))
  (if (< n 0)
      (display "Wrong argument!")
      (fac-times n 1)))
21
задан AnthonyWJones 17 November 2009 в 09:56
поделиться

3 ответа

SortedList <,> - это действительно карта, отсортированная по ключу, а не список. Возможно, плохое название. Но есть способы подражать тому, что вы хотите, в зависимости от ваших конкретных требований. Вы можете, например, инкапсулировать SortedList и добавить / удалить что-то вроде:

// add
int count;
if(list.TryGetValue(value, out count)) list[value] = count+1;
else list[value] = 1;

В конечном итоге вы также можете использовать простой список ( List <> ) - это зависит от того, что вы делаете.

Отчасти я ожидаю, что привязка данных и т. д. затрудняет реализацию обычного списка, который сортируется немедленно - вам нужно реализовать много интерфейсов, чтобы получить это работает, так как обычно ожидается, что добавленный вами элемент останется в конце.

7
ответ дан 29 November 2019 в 22:09
поделиться

Я не уверен, соответствовать вашим требованиям. Но вы можете отсортировать обычный список. MSDN говорит об этом, но, очевидно, для этого требуется вызов sort.

2
ответ дан 29 November 2019 в 22:09
поделиться

Я пытался найти то же самое: в основном список, который остается упорядоченным по мере добавления в него элементов. Ближе всего я пока нашел SortedSet из Goletas.Collections, который использует реализацию AVL дерева:

http://www.goletas.com/solutions/collections/

Но этот класс все еще требует, чтобы каждый элемент в списке был уникальным (отсюда и "Set").

Возможно, этот класс можно модифицировать для поддержки неуникальных элементов.

1
ответ дан 29 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

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