说我有一个1000个随机日期的列表,称之为L
我不认为c#有一个'Tree'集合,所以我想知道如何实现以下内容:
树将深度为3个阶段,第一个阶段包含年份,下一个阶段包含父年中L
的所有月份,最后阶段包含“父”月中的所有日期,以及'祖父母'年。
我应该使用什么样的集合,或者我可以使用嵌套数组?
答案 0 :(得分:2)
我没有测试过代码,但你应该能够做到这样的事情:
class Container
{
public Container() { Items = new Dictionary<int, Container>(); }
public DateTime DateTime {get;set;}
Dictionary<int, Container> Items {get;set;}
}
Dictionary<int, Container> items = new Dictionary<int, Container>();
foreach (var date in theListCalledL)
{
Container yearContainer;
if (!items.TryGetValue(date.Year, out yearContainer))
{
yearContainer = new Contanier{DateTime = date};
items.Add(date.Year, yearContainer);
}
Container monthContainer;
if (!yearContainer.Items.TryGetValue(date.Month, out monthContainer))
{
monthContainer = new Contanier{DateTime = date};
yearContainer.Add(date.Month, monthContainer);
}
Container dayContainer;
if (!monthContainer.Items.TryGetValue(date.Day, out dayContainer))
{
dayContainer = new Contanier{DateTime = date};
monthContainer.Add(date.Day, dayContainer);
}
}
//and to get items:
var container = items[1997][8][10];
Console.WriteLine("The date was: " + contanier.DateTime);
var tmp = items[1997];
Console.WriteLine("1997 has items for " + tmp.Items.Count + " months.");
答案 1 :(得分:0)
怎么样
Dictionary<int, Dictionary<int, HashSet<int>>> dateTree;
但实际上,在不知道如何使用它的情况下,我们无法重新获得帮助。您能否以这种方式向我们提供有关您希望存储日期的更多信息?