【发布时间】:2016-06-28 22:43:57
【问题描述】:
最近在一次采访中,被问到一个问题——
让我们在一个文件系统中拥有数十亿个数据[假设数据已经被现有代码获取]我的任务是使用电子邮件 ID 作为搜索条件以最佳情况复杂度来查找人员姓名。 另外,什么系列最适合这个?
public class Person
{
public string Name {get;set;}
public string Email {get;set;}
}
【问题讨论】:
-
您是否考虑过使用
Dictionary<string, string>?其中key是Email,Name是值。然后,您可以使用一个简单的检查来查看该字典是否包含电子邮件地址作为键 -if (dict.ContainsKey("email@domain.com")) { var match = dict["email@domain.com"].Value; } -
这听起来有点像一个技巧问题。有两个赠品。 1)他们指定数据在文件系统中。 2)有数十亿。他们故意描述您无法实时直接查询的内容。如果多个用户尝试同时执行查询,那么找到一条记录需要很长时间,甚至更长。答案不是查询文件,而是将数据转换为您可以查询的内容。