0
說我有1000個隨機日期的列表,稱之爲L
存儲日期,哪個結構? C#
我不認爲C#有一個「樹」的收集,所以我想知道如何實現以下內容:
樹將是3個階段深,第一階段包含年份,下一階段包含父母年份L
中的所有月份,最後階段包含「父」月份和「祖父母」年份中的所有天數。
應該使用什麼類型的集合,或者我可以只使用嵌套數組?
說我有1000個隨機日期的列表,稱之爲L
存儲日期,哪個結構? C#
我不認爲C#有一個「樹」的收集,所以我想知道如何實現以下內容:
樹將是3個階段深,第一階段包含年份,下一階段包含父母年份L
中的所有月份,最後階段包含「父」月份和「祖父母」年份中的所有天數。
應該使用什麼類型的集合,或者我可以只使用嵌套數組?
我沒有測試的代碼,但你應該能夠做這樣的事情:
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.");
如何
Dictionary<int, Dictionary<int, HashSet<int>>> dateTree;
不過說真的,跟了知道你需要如何使用它,我們不能雷爾幫助。你能給我們提供更多關於你爲什麼要這樣存儲日期的信息嗎?
爲什麼不使用'名單'? –
knittl
2010-09-01 10:51:29
考慮C5 .net庫http://www.itu.dk/research/c5/ – kenny 2010-09-01 10:52:07
你需要什麼類型的集合取決於你想要對這些日期做什麼。 – LukeH 2010-09-01 10:55:07