【发布时间】:2019-06-26 15:05:20
【问题描述】:
以下是读取的日志文件示例,包括:JobStatus:(Finished, Processing)、JobName、InstanceName、Duration。
不保证事件的顺序。
使用 Java,完整解析此日志文件并报告每个 jobName 的名称和完成所需的最长持续时间的最有效方法是什么?你会使用什么数据结构?
HashMap<String, TreeMap<Integer, String>>
or
List<HashMap<String, TreeMap<Integer, String>>>
您将如何打印在不同作业名称之间排序的最终结果?
Sample Input:
--------------
"Processing jobName=execute jobInstanceId=x1"
"Processing jobName=execute jobInstanceId=y1"
"Finished jobInstanceId=x1 duration=920"
"Finished jobInstanceId=y1 duration=12009"
"Finished jobInstanceId=z1 duration=50"
"Processing jobName=analyze jobInstanceId=z1"
Expected Output:
--------------
execute 12009
analyze 50
【问题讨论】:
-
您的问题非常广泛。我建议你分解一下。从解析开始。一旦你可以解析它,然后担心如何解释信息。考虑一下,然后发布具体的、针对性强的问题。
-
在java中传递日志/平面文件的选项太多了。需要研究。
-
谢谢@JimMischel,我应该更清楚这个问题。问题不在于解析。挑战在于 DS 建议您将数据解析成什么,这样我们就可以从每个 jobName 中找到 jobInstance 的最大持续时间并按排序顺序打印它。避免定义不必要的 DS 和消耗不必要的空间的最有效方法是什么?你会将什么信息解析成什么确切的 DS?感谢任何帮助
标签: java hashmap comparator priority-queue treemap