список списков плохо пахнет, каковы мои другие варианты - PullRequest
4 голосов
/ 24 июля 2010

Мне нужно собрать список списков, но сама идея звучит не очень красиво.Это звучит так громоздко.Есть ли какой-то другой шаблон для хранения списка списков.

Сначала я хочу использовать массивList of Arraylist.

c #, .net-2

more: thenколичество сохраняемых элементов невелико, но всегда меняется.

ПРИМЕЧАНИЕ. Я исправлен при использовании ArrayLists в этом вопросе:

Что не так с использованием ArrayList в .net-2,0

Ответы [ 6 ]

6 голосов
/ 24 июля 2010

Нет ничего плохого в List<List<T>> - LINQ's SelectMany может быть вашим другом в этой ситуации.

2 голосов
/ 24 июля 2010

вы можете, но лучше обернуть его в класс с хорошо определенными публичными методами.

2 голосов
/ 24 июля 2010

Как насчет использования объектов, созданных в пользовательских классах?

Например, у Клиентов может быть несколько адресов.Создайте объект Customer, который имеет свойство Address.Затем у вас может быть коллекция (массив, ArrayList и т. Д.) Клиентов, и у каждого клиента может быть коллекция адресов.

Это подходит для многих видов информации, таких как «Продукты в категориях продуктов», «Сотрудники в отделах».

В кодировании проще обрабатывать иерархические отношения таким образом.

1 голос
/ 24 июля 2010

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

List<List<string>> listOfLists = new List<List<string>>();
listOfLists.Add(new List<string>());
listOfLists.Add(new List<string>());

ArrayList stringListOfStringLists = new ArrayList();
stringListOfStringLists.Add(new ArrayList());
stringListOfStringLists.Add(new ArrayList());
1 голос
/ 24 июля 2010

Список списков не является плохим запахом.Если все ваши списки будут иметь одинаковый размер, вы можете использовать двумерный массив, например int[2,2], но если списки имеют разную длину, то список списков - правильный путь, если не считать формальнокодирование класса для рваного 2D-массива.

1 голос
/ 24 июля 2010

Не проблема вообще.Я уже использовал это, и это было то, что мне нужно в то время.Шаблон представляет собой список списков.:)

...