从文件中查找访问次数最多的URL

时间:2012-08-08 14:22:55

标签: java algorithm data-structures

我有一个包含数百万条记录的文件。文件中的每一行(记录)都有一个用户ID和一个相应的URL(字符串)。我需要在文件中找到1000个访问量最大的URL(字符串)。

我需要使用java应用程序执行此操作。什么是最好的方法?

3 个答案:

答案 0 :(得分:1)

不是Java而是记录:

$ cat records.txt
user1 http://example.com/
user2 http://example.com/
user2 http://example.com/some/path
user1 http://example.com/yet/another path

$ cut -d" " -f2 < records.txt | sort | uniq -c | sort -n -r | head -1000

答案 1 :(得分:0)

以URL作为键的映射,计数作为值肯定是最简单的方法(例如,HashMap<String, Integer>)。每次读一行都会增加计数。

要获得前1000名,请将所有条目投放到TreeSet,其中包含对条目值进行排序的自定义Comparator。然后转出集合中的前1000个项目。

这适用于“数百万”的记录。如果你有数十亿条记录,甚至几亿条记录,你可能会遇到问题,因为一切都是在内存中完成的。

答案 2 :(得分:0)

将其插入数据库,然后使用sql查询检索数据,例如“select count(*),url from visited group by url order by count(*)”