Объединение отсортированных потоков с разрешением конфликтов - PullRequest
0 голосов
/ 16 января 2019

Вопрос Java: у меня есть 2 отсортированных потока: oldData и updatedData, отсортированные, скажем, data.id. Я хочу объединить их, так что если updatedData.id == oldData.id, тогда updatedData заменит oldData. Существуют библиотеки для этого, например Iterators.mergeSort , но они позволяют выводить поток с дублированием, я не нашел ничего, что бы использовало функцию распознавателя для выбора «предпочтительного» потока.

Другой взгляд на эту проблему: мне нужна функция слияния алгоритма сортировки слиянием, которая позволяет мне контролировать случаи, когда отсортированные объекты равны, то есть какой объект выбирать.

Написание такого кода не проблема, но я бы предпочел использовать то, что уже написано, и является частью широко используемой библиотеки, такой как guava. Да, я мог бы делать хаки, такие как добавление поля data.isNew и потока после фильтрации или упаковка данных в Pair (data, isNew), но я бы предпочел более чистое решение.

Я не думаю, что это странное требование для потоков слияния функций, потому что стандартный Map.merge делает именно это: позволяет разрешить конфликт между старым значением и новым значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...