Коллекции для иерархий - PullRequest
0 голосов
/ 14 апреля 2009

В приложении, которое я пишу, я пытаюсь найти способ эффективного хранения иерархий. Вот пример .

Внизу вы можете видеть узлы для хранения. Должен ли я использовать многомерные списки? Это не кажется оптимальным, верно? Я думал, что держу ссылки вот так:

node.Parent
node.Children { collection }

Кто-нибудь имеет опыт работы с такими вещами?

Ответы [ 3 ]

1 голос
/ 14 апреля 2009

Это довольно базовая реализация дерева, да. Если вы решите сделать свою коллекцию для детей IList, IEnumable или ArrayList и т. Д., Решать только вам.

Я бы настоятельно рекомендовал вам создать универсальную реализацию вместо одной, типизированной для вашей доменной модели, однако это зависит от вас.

1 голос
/ 14 апреля 2009

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

1 голос
/ 14 апреля 2009

Да. У вас правильная идея. Если вам нужна двунаправленная иерархия, я бы не использовал многомерный список ... Я бы добавил узел в дерево, и каждый узел содержал бы родителя и коллекцию потомков.

Вы на правильном пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...