У меня очень большой набор пар ключ-значение (ТБ данных), считанных из некоторых файлов.
Для простоты, давайте предположим, что ключи и значения являются целыми числами.
ВВ конце я заинтересован в том, чтобы каждый ключ имел наивысшие значения N, с которыми он встречался, и записывал их, опять же, как пары значений ключей, в несколько разных файлов.
Нет проблем, если выходной файл содержит более N записей для данного ключа, если среди них есть наименьшие 3 значения.
Сохранение файлов в том виде, в каком они есть, удовлетворяет вышеуказанномуусловие, но я пытаюсь уменьшить размер, так как некоторые клавиши имеют много значений на входе, которые не представляют интереса.
Сохранение всех данных в памяти явно не вариант.
Таким образом, я ищу какой-то кеш.Что-то, где я могу хранить отсортированный список для каждого ключа, который я найду, и как только будет достигнут определенный лимит размера, я просто сбрасываю половину записей из кэша на выход.LoadingCache
Гуавы, похоже, не помогает мне здесь, потому что веса computed at entry creation time, and are static thereafter.
Есть ли конкретная структура данных / алгоритм, который я могу использовать / реализовать, который может помочь мне здесь?