我有几个事件日志文件(每行一个事件)。日志可能会重叠。日志是在可能来自多个时区的单独客户端计算机上生成的(但我假设我知道时区)。每个事件都有一个标准化为公共时间的时间戳(通过使用适合日志文件的时区实例化每个日志解析器日历实例,然后使用 getTimeInMillis 获取 UTC 时间)。日志已经按时间戳排序。多个事件可以同时发生,但它们绝不是相等的事件。
这些文件可能比较大,例如单个日志中有 500000 个或更多事件,因此将日志的全部内容读入一个简单的 Event[] 是不可行的。
我正在尝试做的是将每个日志中的事件合并到一个日志中。这有点像一个合并排序任务,但每个日志都已经排序,我只需要将它们放在一起。第二个组件是可以在每个单独的日志文件中见证相同的事件,我想在文件输出日志中“删除重复事件”。
这可以“就地”完成吗,例如在每个日志文件的一些小缓冲区上按顺序工作?我不能简单地将所有文件读入 Event[],对列表进行排序,然后删除重复项,但到目前为止,我有限的编程能力只能让我将其视为解决方案。当我同时从每个日志中读取事件时,是否可以使用一些更复杂的方法来执行此操作?