Dictionary中ContainsKey和ContainsValue的区别?

时间:2018-04-07 09:33:35

标签: c#

containsKey与containsValue有什么不同?

public Dictionary<string, string> dictionary = new Dictionary<string, string>();


if(dictionary.ContainsValue("123"))
{

}
if(dictionary.ContainsKey("123"))
{

}

2 个答案:

答案 0 :(得分:4)

Dictionarys是从keyvalue的映射。

ContainsKey()检查您的词典是否包含某个键,非常快 - 查找键(并找到与 键相关联的数据)是词典的主要力量。您可能需要这样做,以避免访问不存在的密钥 - 在这种情况下阅读TryGetValue() - 这可能是避免访问非现有密钥数据的更好选择。

ContainsValue()遍历所有值并检查它是否在字典中,它是一个缓慢且繁琐的过程,因为它需要转到所有值,直到第一个匹配。访问值不是通过其键,而是通过迭代全部是是什么词典。

执行ContainsKey()很好,如果您认为需要执行ContainsValue(),则可能是在错误的数据结构上运行。

Doku:

答案 1 :(得分:1)

ContainsKey检查string s中是否存在给定对象(在本例中为Key)。字典使用hash,因此该操作执行速度非常快(O(1)复杂度)。

包含值检查给定对象(在本例中为int)是否存在于Value中。

public Dictionary<string, int> dictionary = new Dictionary<string, int>();

dictionary.Add("123", 321);

if(dictionary.ContainsValue(321)) // return true
{

}
if(dictionary.ContainsKey("123")) //return true
{

}