我正在从事图像挖掘项目,我使用 Hashset 而不是数组来避免在收集 url 时添加重复的 url,我到达了代码点来迭代包含主要 url 的 Hashset,并在迭代中下载主 URL 的页面并将它们添加到 Hashet,然后继续,在迭代期间我应该排除每个扫描的 url,并且还排除(删除)每个以 jpg 结尾的 url,直到 url 计数的 Hashet 达到 0,问题是我在这个迭代中面临着无休止的循环,在那里我可能会得到 url(我们称之为 X)
1- 我扫描 url X 的页面 2- 获取页面 X 的所有 url(通过应用过滤器) 3- 使用 unioinwith 将 url 添加到 Hashset 4- 删除扫描的 url X
当其中一个 URL Y 被扫描时再次带 X 时,问题就出现了
我应该使用字典和密钥作为“扫描”吗?我会尝试在这里发布结果,抱歉,在我发布问题后我想到了......
我设法为一个 url 解决了它,但它似乎与其他 url 一起发生以生成循环,所以即使在删除链接后如何处理 Hashset 以避免重复,我希望我的观点很清楚。
while (URL_Can.Count != 0)
{
tempURL = URL_Can.First();
if (tempURL.EndsWith("jpg"))
{
URL_CanToSave.Add(tempURL);
URL_Can.Remove(tempURL);
}
else
{
if (ExtractUrlsfromLink(client, tempURL, filterlink1).Contains(toAvoidLoopinLinks))
{
URL_Can.Remove(tempURL);
URL_Can.Remove(toAvoidLoopinLinks);
}
else
{
URL_Can.UnionWith(ExtractUrlsfromLink(client, tempURL, filterlink1));
URL_Can.UnionWith(ExtractUrlsfromLink(client, tempURL, filterlink2));
URL_Can.Remove(tempURL);
richTextBox2.PerformSafely(() => richTextBox2.AppendText(tempURL + "\n"));
}
}
toAvoidLoopinLinks = tempURL;
}