У меня есть записи журнала для одного пользователя, которые существуют в следующем формате:
[unique id], [start time],[ end time]
Итак, в следующих примерах записей:
1,1100,1200
2,1030,1130
3,1420,1500
4,1519,1700
Поиск сеансов, т. Е. Журнал группызаписи в качестве «сессий».Условия для определения сеанса:
- Если интервал времени между двумя записями перекрывается, то они принадлежат одному и тому же сеансу.
- Или, если не перекрываются, но промежуток между <30,затем они принадлежат одному сеансу. </li>
Пример: вывод должен быть таким:
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;
}