Если есть 2 класса, Команды и Игры. Примерно так:
class Team {...}
class Games
{
Team team1;
Team team2;
...
}
И у меня есть список всех сыгранных игр ...
List<Games> allGames ...
Что я сейчас хочу сделать: для дальнейшего статистика Мне нужна матрица, которая подсчитывает, как часто каждая команда играла против любой другой команды.
Ранее я бы решил это следующим образом:
int[,] countTeamVsTeam = new int[allTeams.Count, allTeams.Count];
foreach (Game game in allGames)
{
countTeamVsTeam[game.team1.SOMENUMBER,game.team2.SOMENUMBER]++;
}
Теперь мне интересно, хорошая ли это идея? чтобы пропустить этот искусственный атрибут SOMENUMBER и использовать объекты сами по себе в качестве индекса моей структуры данных:
Dictionary<Team, Dictionary<Team, int>> countTeamVsTeam = new Dictionary<Team, Dictionary<Team, int>>();
// initialize
foreach (Team team1 in allTeams)
{
countTeamVsTeam[team1] = new Dictionary<Team, int>();
foreach (string team2 in allTeams)
{
countTeamVsTeam[team1][team2] = 0;
}
}
foreach (Game game in allGames)
{
countTeamVsTeam[game.team1,game.team2]++;
}
Есть мысли по этому поводу?
Это хороший способ сделать это?
Является ли Dictionary<Team, Dictionary<Team, int>>
хорошей структурой данных для представления двумерной матрицы? (да, я знаю, что это не массив, а словарь словарей ...)