作为构建网络抓取工具的一部分,我已经提取了抓取工具访问的链接。
哪种数据结构适合存储具有唯一标识符的每个URL,因此我在访问页面之前可以测试该页面是否已被访问过。
答案 0 :(得分:1)
方法:考虑unique-identifier是page / url标题或从url
计算的一些唯一哈希值,例如:
<强> URL:强> http://stackoverflow.com / questions / 18102087 / data-structure-for-uniqurly-stored-links
Id: 18102087 OR UNIQUE-HASH(MD5等)
其他网址:Root / questions / tagged / java,Root / questions / 18102124 / mysql-database-using-matlab
数据结构:
Map [ROOT-URL, Map[ID, URL]]
获取/阅读
获取ROOT的所有网址
<强>益处:强>
<强>缺点:强>
内存,保持额外的ROOT字符串(比如数百万次)。一种Map
方法只有ID和网址
与单一Map方法相比,有两次查找而不是一次查找,但这应该没问题,因为HashMap
答案 1 :(得分:0)
可能HashSet是要走的路。在这种情况下,每个URL(或字符串)是唯一标识符。您还可以实现IEqualityComparer以进行自定义比较。