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