我有以下列格式存在的单个用户的日志条目:
[unique id], [start time],[ end time]
因此,在以下示例条目中:
1,1100,1200
2,1030,1130
3,1420,1500
4,1519,1700
查找会话,即将日志条目分组为“会话”。确定会话的条件是:
如果两个条目时间跨度重叠,则它们属于同一会话。
或者如果不重叠,但在 < 30 之间的差距,那么它们属于同一个会话。
示例:输出应如下所示:
Session 1: 1, 2
Session 2: 3, 4
我在想的逻辑是:
解析字符串并将其加载到“LogEntries”类中。
根据“startTime”对“条目”集合进行排序。我有“LogEntries”类实现了“Comparable”接口。
现在迭代“条目”集合并获得所需的输出。输出将是一个字符串列表,其中每个字符串将用逗号分隔。
我想出了下面的代码,但我对如何处理上面的第 3 点逻辑感到困惑。
private static List<String> groupSessions(List<String> inputs) {
List<String> output = new ArrayList<>();
List<LogEntries> entries = new ArrayList<>();
for (String input : inputs) {
String[] arr = input.split(",");
LogEntries entry =
new LogEntries(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]),
Integer.parseInt(arr[2]));
entries.add(entry);
}
// sort it basis on startTime
Collections.sort(entries);
// now iterate the entries list - this is where I am confuse
for (int i = 0; i < entries.size(); i++) {
// do some stuff
}
return output;
}
翻阅古今
相关分类