繁体   English   中英

检查列表中的键/值对

[英]Check key / value pair in List

我把列表声明为

 List<KeyValuePair<string, Int64>> KPList = new List<KeyValuePair<string, long>>(); 

我需要检查密钥和值的组合是否已经存在。 我不能使用字典,因为我需要具有键和值的唯一组合,以防密钥具有多个值但作为一对

if(!KPList.Any(p=> p.Key ==keyp && p.Value == valuep))

这有什么问题?

您也可以使用HashSet ,它没有值,但可以根据需要使用。

HashSet< Tuple<string, long> > KPSet = new HashSet< Tuple<string, long> >(); 
...
if(KPSet.Contains(p))
{
    ...
}

为了方便使用和最佳性能,我建议使用Dictionary和HashSet的组合:

var KPDict = new Dictionary<string, HashSet<long>>();

然后它将为您提供O(1)+ O(1)查找复杂性并轻松检查值:

if (KPDict.ContainsKey(keyp) && KPDict[keyp].Contains(valuep)) {
    //do some actions
}
else{
    //some logic in case keyp, valuep pair not found in KPDict
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM