Java问题:我有2个排序的流:oldData和updatedData,按说data.id排序。我想合并它们,所以如果updatedData.id == oldData.id,那么updatedData将替换oldData。 有现有的库可以执行此操作,例如Iterators.mergeSort,但它们允许输出流带有dups,我没有找到任何需要使用解析器功能来选择“首选”流的东西。
关于此问题的另一种观点:我想要合并排序算法的合并功能,该功能可以让我控制排序对象相等时的情况,即选择哪个对象。
编写这样的代码不是问题,但是我更喜欢使用已经编写的东西,并且它是番石榴等广泛使用的库的一部分。是的,我可以做一些黑客操作,例如添加字段data.isNew和后过滤流,或将数据包装在Pair(data,isNew)中,但是我更喜欢一种更清洁的解决方案。
对于功能合并流,我认为这不是一个奇怪的要求,因为标准Map.merge确实做到了这一点:允许解决旧值与新值之间的冲突。