我正在编写一个多线程程序,用于爬取某个网站并收集ID。它将这些ID存储在一个共享的静态List<string>
对象中。
当任何项目被添加到List<string>
中时,它首先会与包含已收集ID的黑名单HashSet<string>
进行检查。
我是这样做的:
private static HashSet<string> Blacklist = new HashSet<string>();
private static List<string> IDList = new List<string>();
public static void AddIDToIDList(string ID)
{
lock (IDList)
{
if (IsIDBlacklisted(ID))
return;
IDList.Add(ID);
}
}
public static bool IsIDBlacklisted(string ID)
{
lock (Blacklist)
{
if (Blacklist.Contains(ID))
return true;
}
return false;
}
黑名单在完成后保存到文件中,并在每次程序启动时加载,因此随着时间的推移会变得非常大(高达50k条记录)。是否有更有效的方式来存储和检查每个ID是否在黑名单中?
谢谢!