У меня есть несколько лог-файлов событий (по одному событию в строке). Журналы могут перекрываться. Журналы создаются на отдельных клиентских машинах, возможно, из нескольких часовых поясов (но я предполагаю, что знаю часовой пояс). Каждое событие имеет метку времени, которая была нормализована до общего времени (путем создания экземпляра календаря каждого анализатора журнала с часовым поясом, соответствующим файлу журнала, а затем использования getTimeInMillis для получения времени UTC). Журналы уже отсортированы по отметке времени. Несколько событий могут происходить одновременно, но они ни в коем случае не являются равнозначными событиями.
Эти файлы могут быть относительно большими, например, 500000 или более событий в одном журнале, поэтому чтение всего содержимого журналов в простое Event[] невозможно.
Я пытаюсь объединить события из каждого журнала в один журнал. Это похоже на задачу сортировки слиянием, но каждый журнал уже отсортирован, мне просто нужно собрать их вместе. Второй компонент заключается в том, что одно и то же событие можно наблюдать в каждом из отдельных файлов журнала, и я хочу «удалить повторяющиеся события» в журнале вывода файла.
Можно ли это сделать «на месте», например, последовательно обрабатывая какие-то небольшие буферы каждого лог-файла? Я не могу просто прочитать все файлы в Event[], отсортировать список, а затем удалить дубликаты, но пока мои ограниченные возможности программирования позволяют мне видеть только это как решение. Есть ли более сложный подход, который я могу использовать для одновременного чтения событий из каждого журнала?