0

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

我需要使用 java 应用程序来做到这一点。最好的方法是什么?

4

3 回答 3

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
于 2012-08-08T14:25:47.897 回答
0

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

于 2012-08-08T14:37:40.717 回答
0

以 URL 为键、计数为值的 Map 无疑是最简单的方法(例如,HashMap<String, Integer>)。每次阅读一行时增加计数。

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

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

于 2012-08-08T14:33:23.387 回答