在Java中避免使用大量计数器

在我的
Java项目中,我需要读取一个大约160万行的文件.

每行代表用户在一天内完成的一项操作.如果我没有错,有83种不同的可能行动.

我需要按如下方式分析该文件,并将找到的统计信息存储在csv文件中:
通常:计算一个动作发生的频率(数字将高达约五十万)

但是也应该有单独的文件:

>每小时发生一次动作的频率是多少? (csv文件中有24行)
>每个用户多久发生一次动作? (大约20个不同的用户 – 每个用户的文件)
>每个用户每小时发生一次操作的频率是多少? (每个用户单独的文件,其中24行)

最重要的是,有3个不同的频道(HTML,移动电话,电话)可以发生这些事情(也保存在日志文件中),所以我需要为每个频道创建一个文件夹,并为每个频道做上面提到的事情.

问题:

如何有效地存储/计数?运行时不是一个问题(它不应该运行一天,但它没有问题它需要半小时)
但我怎么算呢?

我不能只为一切创建那么多的计数器(数量会很大),而int []在我看来不是很方便,因为我必须记住哪个动作有哪个索引等.

有更好的解决方案吗?

我考虑过使用本地数据库和SQL脚本,但程序需要在每台PC上运行,并且必须可以从命令行执行(而不一定是在IDE中).我正在使用Intellij 14进行开发.

最佳答案 像
H2这样的嵌入式数据库.

任何包装都意味着你必须自己做所有事情.

你可以在几个级别上计算字段,也可以作为单独的表格来提高速度.带有时间戳进行检查.

优点是报告可以灵活地完成.备份很容易.

当一切正常运行时,可以在以后完成自定义重构.

点赞