gpt4 book ai didi

c# - 在 HashSet 性能中搜索字符串

转载 作者:行者123 更新时间:2023-11-30 19:15:25 26 4
gpt4 key购买 nike

我有一个 HashSet<string>拥有约 5 万名成员。我有另一个对象列表,我正在逐个遍历以确定该对象的电子邮件是否存在。如果是这样,我需要对该对象执行一些操作。

var emailList = db.Emails.Select(s => s.EmailAddress.ToLower()).ToList();
var emailHash = new HashSet<string>(emailList);
var objects = db.Objects.ToList();
// everything is fine up to this point
foreach (var object in objects) {
if (!emailHash.Any(s => s.Equals(object.Email))) { // This takes ~0.3s
Console.WriteLine("Email: {0}", object.Email);
}
}

如何加快判断一个字符串是否存在于字符串列表中的速度?

最佳答案

您没有正确使用 HashSet。使用 Linq 的 .Any() 实际上会根据 HashSet 中存储的每个元素评估您的条件。

要搜索某个项目是否存在于 HashSet 中(具有常数时间,O(1)),请使用 emailHash.Contains(object.Email)

关于c# - 在 HashSet<string> 性能中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com