【发布时间】:2017-02-11 11:39:26
【问题描述】:
我正在从事图像挖掘项目,我使用 Hashset 而不是数组来避免在收集 url 时添加重复的 url,我到达了代码点来迭代包含主要 url 的 Hashset,并且在迭代中我去并下载主 URL 的页面并将它们添加到 Hashet 中,然后继续,在迭代期间我应该排除每个扫描的 url,并排除(删除)每个以 jpg 结尾的 url,直到 url 计数的 Hashet达到 0,问题是我在这个迭代中面临无限循环,我可能会得到 url(我们称之为 X)
1- 我扫描 url X 的页面 2-获取页面X的所有网址(通过应用过滤器) 3- 使用 unioinwith 将 url 添加到 Hashset 4-删除扫描的url X
当其中一个 URL Y 被扫描时再次带 X 时,问题就出现了
我应该使用字典和密钥作为“扫描”吗?我将尝试在此处发布结果,抱歉,我发布问题后想到...
我设法为一个网址解决了这个问题,但似乎它发生在其他网址上以生成循环,所以即使在删除链接后如何处理哈希集以避免重复,,,我希望我的观点是清除。
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;
}
【问题讨论】: