2011-12-10 35 views
3

我想寫一個程序,將使用一個數據結構/類,將持有多個數據項的一個關鍵 - 這將有點類似於字典,但它不是一對一,而是一對多關係。我正在想一個我可以使用的課程,但我無法想出任何結果。我可以使用哪種數據結構/類來表示一對多關係?

例如如何可能看起來像:

我在不同的文件中的參數x值和3個不同的值,所以我將有:

xValue, <1.txt, 1> 
xValue, <2.txt, 2> 
xValue, <3.txt, 3> 

任何想法?

編輯: 我已經想通了這一點 - 畢竟,我可以使用

Dictionary< string , Dictionary<..., ... > >

,不行嗎?

+0

實際上,您可以使用嵌套字典,但如果您不需要知道'xValue'是來自哪個文件,那麼您可以使用'HashSet'。 – Vlad

回答

3

,因爲在.NET中沒有多集本地,我會去

Dictionary<Key, HashSet<XValue>> 
你的情況

如果您可以使用第三方容器,您可以從here查找答案,例如Wintellect PowerCollections

1

如果您不需要修改初始化後此集合,只是需要做搜索,你可以利用內置的Lookup<TKey, TElement>類,但實際上這將是棘手和在罕見情況下,當你已經有IEnumerable<>實例,將壓平以查找數據結構,無論如何,這是非常有用的記住,.NET提供這樣的intersting類。

MSDN

表示每種映射到一個或一個以上值的鍵的集合。 A Lookup<TKey, TElement>類似於Dictionary<TKey, TValue>。 區別在於Dictionary<TKey, TValue>將鍵映射到單個 值,而Lookup<TKey, TElement>將鍵映射到 值的集合。

你不能明確地實例化它,只是可以使用LINQ ToLookup()方法得到查找的實例。有很大的限制,所以你可以使用這個類作爲查找數據結構 - 進行搜索。

沒有公共構造函數來創建 查找的新實例。此外,查找對象 是不可變的,也就是說,在創建Lookup對象後,您不能添加或刪除 中的元素或鍵。

相關問題