【问题标题】:How to search duplicated key in KeyValuePair list and delete the earlier key value如何在 KeyValuePair 列表中搜索重复键并删除较早的键值
【发布时间】:2015-08-27 14:54:08
【问题描述】:

我有一个KeyValuePair 列表用于存储来自传入消息的一些信息。

List<KeyValuePair<int, string>> qInfoTempList = new List<KeyValuePair<int, string>>();

qInfoTempList.Add(new KeyValuePair<int, string>(eventInfo.ReferenceId, eventInfo.StringValue));

一旦消息进入,消息的参考 id 将作为键存储,消息的选定值作为值存储在列表中。如何在现场检测到重复键并删除列表中较早的键?

在这种情况下,使用Dictionary而不是List会更好吗?

【问题讨论】:

  • 如果你总是想删除前一个条目,那么是的,使用字典比使用列表更好。
  • 恕我直言 Dictionary&lt;,&gt; 显然是这里首选的数据结构,它完全符合您的要求。
  • @Thorarins 在这种情况下,他实际上并不需要搜索列表。创建映射会更容易、更快。

标签: c# .net list keyvaluepair


【解决方案1】:

如果不想重复,可以使用Dictionary&lt;TKey, TValue&gt;,并使用ContainsKey检查密钥是否存在:

var infoById = new Dictionary<int, string>();
if (infoById.ContainsKey(someId))
{
    // Do override logic here
}

或者如果你不关心前一项,你可以简单地替换它:

infoById[someId] = value;

【讨论】:

  • 嗨@YuvalItzchakov,感谢您的快速回复。那么如果我使用字典,当消息进来时字典的大小会不断增加吗?首次运行后密钥将被复制,不会生成新密钥。
  • @YWah 是的,它会在您插入记录时动态调整大小。
猜你喜欢
  • 2012-11-21
  • 2013-04-09
  • 1970-01-01
  • 2022-08-17
  • 2019-05-17
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
相关资源
最近更新 更多