Заполнение вложенных коллекций в C#
Зубчатый массив заполняют построчно. Пустую зубчатую таблицу собирают так: создают массив строк, для каждой строки - новый массив нужной длины:
int[][] rows = new int[2][];
rows[0] = [1, 2, 3];
rows[1] = [4, 5, 6];
Console.WriteLine(rows[1][2]);
Список списков удобен, когда строки разной длины. Пустой List<List<int>> заполняют
двумя циклами. Внешний добавляет строку,
внутренний копит числа во временном списке,
затем строку кладут через Add:
List<List<int>> table = [];
for (int i = 0; i < 2; i++) {
List<int> row = [];
for (int j = 1; j <= 3; j++) {
row.Add(j);
}
table.Add(row);
}
Console.WriteLine(table[1][2]);
Словарь словарей хранит значения по двум ключам. Вложенный словарь заполняют по готовым ключам. Если пары еще нет, создают внутренний словарь, затем пишут значение:
Dictionary<string, Dictionary<string, int>> data = new();
string[] keys = ["a", "b"];
string[] sub = ["x", "y"];
for (int i = 0; i < keys.Length; i++) {
for (int j = 0; j < sub.Length; j++) {
if (!data.ContainsKey(keys[i])) {
data[keys[i]] = new Dictionary<string, int>();
}
data[keys[i]][sub[j]] = j + 1;
}
}
Console.WriteLine(data["b"]["y"]);
Заполните список списков: три строки,
в каждой числа 1, 2, 3.
Выведите результат построчно через пробел.
Дан массив букв:
char[] letters = ['a', 'b', 'c'];
Заполните список списков двумя строками,
каждая из которых повторяет все буквы
из letters. Выведите результат
построчно через пробел.
Даны ключи:
string[] keys = ["n", "s"];
string[] sub = ["a", "b"];
Заполните словарь словарей: по каждому
внешнему ключу внутренние значения
10 и 20. Выведите число
по ключам "s" и "a".