特定のサイトをスクレイピングして ID を収集するマルチスレッド プログラムを作成しています。List<string>
これらの ID を共有静的オブジェクトに格納しています。
アイテムが に追加されると、まず、既に収集された ID のブラックリストを含むList<string>
に対してチェックされます。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 をチェックするより効率的な方法はありますか?
ありがとう!