【发布时间】:2021-12-18 17:09:53
【问题描述】:
我的Individual 班级中有一个Dictionary<int,int>。
public class Individual
{
Dictionary<int,int> pattern = new Dictionary<int,int>();
}
我想在我的 population 字典中添加一个 <int,Individual> 对:
Dictionary<int,Individual> population = new Dictionary<int, Individual>();
当且仅当字典中没有其他 Individual 具有类似的 pattern 变量。
我目前的方法是天真地迭代每个Individual 中的每个pattern 已经存在于population,但我相信使用不同的方法可以更快地完成。
public bool same_dict(Dictionary<int, int> p1, Dictionary<int, int> p2)
//Meant to compare patterns
{
if (p1.Count != p1.Count) return false;
foreach (var feature in p1)
{
if (p2.ContainsKey(feature.Key))
{
if (feature.Value != p2[feature.Key]) return false;
}
else return false;
}
return true;
}
public bool matched is_duplicated(Individual ind, Dictionary<int, Individual> pop)
{
//Meant to compare Individuals
foreach (var ind2 in pop)
{
if (same_dict(ind.pattern, ind2.Value.pattern))
{
return true;
}
}
return false;
}
我必须使用ints 作为population 字典的键,因为我使用它来链接Individual 对象与程序的其他部分。
pattern 字典可以包含任意数量的键:值对,这就是我验证它们的 .Count 属性是否相同的原因。
【问题讨论】:
标签: c# performance dictionary hash duplicates