mstk_ Ответов: 4

Двумерный Список


Всем привет,
Можно ли использовать такую структуру данных List<T>[][] listArray
Позвольте мне объяснить более подробно. Например, когда мы используем string[][] strArray и
strArray[i][j] дает нам веревочку. Есть ли какой-нибудь способ сделать это с помощью List<T>.
я.е ListArray[i][j] может, дать мне список ? (словарь может решить мою проблему, но я задаюсь вопросом, есть ли другой способ. )

Shahin Khorshidnia

Создание Собственного Класса Коллекций!

Sander Rossel

На самом деле я написал статью о реализации ваших собственных коллекций (включая словарь). Если вам интересно, вы можете прочитать его. Найдите его в моих статьях, он называется " веселиться с пользовательскими коллекциями!" :)

Shahin Khorshidnia

Конечно, я прочту его.

4 Ответов

Рейтинг:
32

Sander Rossel

Как насчет а List<List<T>>? :)
Я думаю, что иметь список списков-это более или менее то же самое, что иметь двумерный массив.
List<T>[][] это также совершенно справедливо, хотя вы получите много списков.

List<List<string>> lists = new List<List<string>>();
lists[0].Add("Hello");
string test = lists[0][0]; // Should return "Hello".

Редактировать:
Так что насчет Словарь<TKey, TValue>[^] вариант, вы могли бы иметь Dictionary внутри а Dictionary.
Вы говорите, что у вас есть день, так что давайте скажем день 1, день 2, день 3... В этом случае день-это integer ценность.
Для любого данного дня у вас есть время, возможно, вы используете промежуток[^] для этого.
Кроме того, я предполагаю, что для каждой комбинации дня и времени вы хотите сохранить значение, скажем string (но это может быть что угодно). Тогда у вас будет Dictionary подобный этому:
Dictionary<int, Dictionary<TimeSpan, string>>
string myString = myDictionary[1][myTime] // Day 1 at that specific time.
Допустим, ваш день-это конкретная дата. Ваш Dictionary тогда бы это выглядело так:
Dictionary<DateTime, Dictionary<TimeSpan, string>>
string myString = myDictionary[DateTime.Today][myTime] // Today at that specific time.
Использование довольно легко по сравнению с работой с многомерным массивом, я думаю (но это просто вопрос того, к чему вы привыкли) :)


Sergey Alexandrovich Kryukov

Это верное предложение, мой 5, но формально можно использовать List<T>[][] (массив массивов экземпляров List<T>) или что-нибудь в этом роде.
--СА

Sander Rossel

Спасибо! Конечно, вы можете использовать его, но это не самый простой метод (ну, если вы не привыкли к (многомерным) массивам) :)

mstk_

Спасибо за быстрый ответ. Но, как я уже сказал выше, списки[0][0] должны возвращать мне список, а не строку. Потому что я хочу использовать дни как столбцы и время(9:00-18:00) как строки. Но вы говорите: "List<t>[][] также совершенно правомерен". Я постараюсь сделать это как можно скорее, надеюсь, это облегчит мою работу. :)

Sander Rossel

Вы также можете попробовать Dictionary<int, Dictionary<TimeSpan, string>>
Затем вы можете сказать: string myString = myDictionary[1][myTime]

wizardzz

Тогда взгляните на предложение Сака.

mstk_

Извините, не могли бы вы объяснить словарь<int,>> немного больше

Sander Rossel

Я отредактировал свой ответ. Пожалуйста, смотрите ниже 'Edit:' :)

Рейтинг:
0

@sunusi1

Вы можете использовать (это может быть имя_массива [][]=новому типу data_type [rows_size][cols_size])


Рейтинг:
0

harikrishna_ambati

Привет

Я думаю, что приведенное ниже объяснение работает для моего требования, которое является своего рода двухмерный массив списков.

Требование:-
В "Tab control" каждая "TabPage" должна иметь один браузер, что означает
TabPage1--> Browser1
TabPage2--> Browser2

Решение (что помогает в моделировании двумерного массива списков):-

Шаг 1:- создание структуры
структура myoownobjects
{
ТБФ новые
geckofx gkbrw
}

Шаг 2:- Создание массива списков(одно измерение) объекта strcut

List<myoownobjects> lst1 = новый список<myoownobjects>();


Думаю, это тоже может сработать.


Рейтинг:
0

Member 14959048

Если вы знаете, сколько списков вы будете нуждаться тогда как насчет того, как массив[список имен,AgeList,точку]? Списки могут изменяться динамично в любом случае