【发布时间】:2014-02-19 21:15:32
【问题描述】:
假设我想实现浏览器历史记录功能。如果我第一次访问该 url,它会进入历史记录,如果我再次访问同一页面,它会出现在历史记录列表中。 假设我只显示前 20 个站点,但我可以选择查看上个月、上周等的历史记录。
什么是最好的方法?我会使用哈希图来插入/检查它是否被更早地访问过,但是我如何为最近访问过的有效排序,我不想使用树图或树集。另外,我如何存储几周和几个月的历史记录。浏览器关闭时是否写入磁盘?当我点击清除历史时,数据结构是如何删除的?
【问题讨论】:
-
如果您使用的是哈希映射,则无法快速检索排序结果。为什么不想使用树图,也就是红黑搜索树?
-
因为红黑树在内部需要大量的旋转来保持平衡,特别是如果有很多添加,我假设这发生在浏览器中,因为用户可以从已知站点跳到新站点. HashMap 会表现得更好,问题是使用辅助数据结构对内容进行排序和移动..
-
您希望有多少网站在历史缓存中?如果你一整年有 100,000 页,我会感到惊讶,但即使是 100 万页也没什么大不了的。只需将它们存储在线性列表中并按顺序搜索即可。对于像浏览器这样的用户界面应用来说,这已经足够快了。
标签: data-structures browser-history