containsKey与containsValue有什么不同?
public Dictionary<string, string> dictionary = new Dictionary<string, string>();
if(dictionary.ContainsValue("123"))
{
}
if(dictionary.ContainsKey("123"))
{
}
答案 0 :(得分:4)
Dictionarys是从key
到value
的映射。
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
{
}