【问题标题】:Using LinkedList in Dictionary C#? And how to implement it's operations?在字典 C# 中使用 LinkedList?以及如何实现它的操作?
【发布时间】:2021-06-20 12:54:14
【问题描述】:

我正在尝试实现一个字典,其中 value 是 LinkedList。下面是一个场景:

public class TransactionTest
{
    private Dictionary<string, LinkedListNode<int>> stocks = new Dictionary<string, LinkedListNode<int>>();

    public TransactionTest()
    {
    }

    public void BuyTransaction(string ticker, int amount) {

        if (!stocks.ContainsKey(ticker))
        {

            LinkedList<int> linkedLists = new LinkedList<int>();
            stocks.Add(ticker, linkedLists.AddFirst(amount));
        }

        else if (stocks.ContainsKey(ticker)) {
            LinkedList<int> linkedLists = new LinkedList<int>();

            stocks[ticker] = linkedLists.AddLast(amount);
        }
            
    }

    public void toStringImpl() {
        Console.WriteLine(stocks.ToString());
    }
}

但我收到以下错误:

TransactionTest test = new TransactionTest();
test.BuyTransaction("AAPL", 100);

 System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.LinkedListNode`1[System.Int32]]

我不知道该怎么做 - 我该怎么做:

  1. 当字典中不存在新键时,为新键创建一个新的 LinkedList
  2. 如果键存在,则在其值的 LinkedList 中添加数量

谢谢!

【问题讨论】:

  • I'm getting an error - 什么错误?
  • System.Collections.Generic.Dictionary2[System.String,System.Collections.Generic.LinkedListNode1[System.Int32]]
  • 这不是错误,这只是类型的名称。应该有一个错误消息伴随它

标签: c# dictionary data-structures linked-list


【解决方案1】:

是的,这是因为您使用了无法隐式转换为 LinkedList 的裸 int 值。相反,您应该将一个新对象实例化为new LinkedListNode&lt;int&gt;(100);

如您所见,它的Value 属性包含100 的值。

【讨论】:

  • 谢谢!那么我可以添加以下内容吗?
  • if (!stocks.ContainsKey(ticker)) { LinkedListNode node = new LinkedListNode(amount);股票.Add(股票代码,节点); }
  • @Y.V 是的,我没有从逻辑上分析你的代码,而是从语法上分析。
【解决方案2】:

您的字典初始化代码中有错误。你写- private Dictionary&lt;string, LinkedListNode&lt;int&gt;&gt; stocks = new Dictionary&lt;string, LinkedListNode&lt;int&gt;&gt;();

您需要使用LinkedList&lt;int&gt; 而不是LinkedListNode&lt;int&gt;,并且您可以继续执行类似的操作-

LinkedList<int> linkedLists = new LinkedList<int>();
stocks.Add(ticker, linkedLists.AddFirst(amount));

它将根据您的要求将 LinkedList 作为值添加到您的字典中。

【讨论】:

  • 知道了!第二部分可以是:
  • else if (stocks.ContainsKey(ticker)) { stock[ticker].AddLast(amount); }
  • 它应该是` else if (stocksContainsKey(ticker)) { stock[ticker] = stock[ticker].AddLast(amount); }`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
相关资源
最近更新 更多