首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键值对数据结构的最佳实现?

键值对数据结构的最佳实现?
EN

Stack Overflow用户
提问于 2008-08-12 13:12:51
回答 8查看 199.5K关注 0票数 79

所以我最近一直在研究C#,所有的泛型集合都让我有点困惑。假设我想表示一个数据结构,其中树的头部是一个键值对,然后在它下面有一个可选的键值对列表(但不超过这些级别)。这样做合适吗?

代码语言:javascript
复制
public class TokenTree
{
    public TokenTree()
    {
        /* I must admit to not fully understanding this,
         * I got it from msdn. As far as I can tell, IDictionary is an
         * interface, and Dictionary is the default implementation of
         * that interface, right?
         */
        SubPairs = new Dictionary<string, string>();
    }

    public string Key;
    public string Value;
    public IDictionary<string, string> SubPairs;
}

它只是一个传递数据的简单分流。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-08-12 13:20:55

有一个名为KeyValuePair的实际数据类型,使用如下所示

代码语言:javascript
复制
KeyValuePair<string, string> myKeyValuePair = new KeyValuePair<string,string>("defaultkey", "defaultvalue");
票数 140
EN

Stack Overflow用户

发布于 2008-08-12 13:25:13

您可以做的一件事是直接使用Dictionary对象,然后使用您自己的修改来扩展它:

代码语言:javascript
复制
public class TokenTree : Dictionary<string, string>
{
    public IDictionary<string, string> SubPairs;
}

这为您提供了无需对密钥执行IDictionary规则(例如,密钥唯一性等)的优势。

是的,你正确理解了构造器的概念:)

票数 13
EN

Stack Overflow用户

发布于 2008-08-12 13:45:53

我认为你可能想要的(作为你的问题的字面实现)是:

代码语言:javascript
复制
public class TokenTree
{
    public TokenTree()
    {
        tree = new Dictionary<string, IDictionary<string,string>>();
    }

    IDictionary<string, IDictionary<string, string>> tree; 
}

您实际上在问题中提到了键值的“列表”,因此您可能希望将内部IDictionary替换为:

代码语言:javascript
复制
IList<KeyValuePair<string, string>>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档