對於集合中的每個項目,我需要一個簡短的字符串和幾個int16字段。我想使用字符串字段來迭代集合(意味着我不想使用數字索引來迭代)。 收集最多約10件物品。感謝您的任何建議。C#數據結構:我應該使用哪種類型的集合?
1
A
回答
7
我認爲Dictionary<string, List<int>>
應該適合您的需求。
Dictionary<string, List<int>> dictionary = new Dictionary<string, List<int>>();
dictionary.Add("key", new List<int>{1,2,3,4});
...
1
我會使用Dictionary
,所以你可以使用任意鍵索引到它 - string
,在你的情況。
1
如果你的意思迭代作爲循環通;那麼它真的並不重要,因爲所有集合支持foreach
:
foreach (var item in collection) { ... }
但是,如果你的意思是迭代爲索引,那麼Dictionary
應該做的工作。
class SomeFields { public int a; public int b; ... }
var collection = new Dictionary<string, SomeFields>();
collection.Add("name", new SomeFields() { a = 1, b = 2 });
var fields = collection["name"];
1
如果集合中的項目是小的「10件或更少」,那麼更好的性能,使用ListDictionary,如果你不知道的元素數,或者如果元素計數在未來可能增加再使用HaybridDictionary。
請注意,HybridDictionary機制在內部使用ListDictionary,而集合很小,然後在集合變大時切換到Hashtable。
2
如果使用.NET 4和「少數INT16」始終是你可能還需要考慮Tuple
類在詞典中值相同數量的值:
var map = new Dictionary<string, Tuple<Int16, Int16, Int16>>();
map["Foo"] = Tuple.Create(1, 2, 3);
var values = map["Foo"];
Console.WriteLine("{0} {1} {2}", value.Item1, value.Item2, value.Item3);
相關問題
- 1. 根據我的需要應該使用哪種數據結構?
- 2. 我應該爲我的列使用哪種數據類型? [MySQL]
- 3. WCF OperationContract - 我應該公開哪種通用集合類型?
- 4. ASP.NET應該使用哪種類型的集合?
- 5. mysql ---我應該使用哪種類型?
- 6. 我應該使用哪種數據結構
- 7. 我應該使用哪種RDBMS或數據結構?
- 8. 我應該使用哪種.NET數據結構?
- 9. 我應該在Java中使用哪種數據結構?
- 10. 我應該在這裏使用哪種數據結構?
- 11. 我應該使用哪種數據結構?
- 12. 我應該使用哪種數據結構進行位填充?
- 13. 我應該使用哪種類型的數據庫?
- 14. 我應該在C++中使用這種600851475143的數據類型?
- 15. 我應該在AlarmManager中使用哪種類型的類型?
- 16. 我應該使用哪種集合類型以獲得最佳性能?
- 17. 我應該使用哪種數據結構來處理多值數據?
- 18. 要使用哪種集合類型?
- 19. 我應該選擇哪種XML結構?
- 20. 我應該在iOS/Objective-C中使用哪種布爾類型?
- 21. 這種類型的數據格式使用哪種數據結構?
- 22. 結合使用多種數據類型
- 23. 我應該使用哪種算法來根據集合對詞進行聚類
- 24. 應該使用哪種數據類型的錢
- 25. Oracle:使用'N'函數查詢 - 我應該使用哪種數據類型?
- 26. 我應該選擇哪種數據結構?
- 27. 實現功能結構:使用哪種數據類型?
- 28. Windows窗體應用程序 - 我應該使用哪種數據庫類型?
- 29. 我應該在Redis中使用哪種數據結構用於通知系統?
- 30. C#數據結構問題(要使用哪個集合?)
偉大的鏈接:[C#/ .NET基礎:選擇正確的集合類](http://blackrabbitcoder.net/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx) – TrueWill