我为 java 8 流实现了一个收集器,当达到给定阈值时,它将实体存储到存储库中。
public BiConsumer<Tuple2<Integer,List<T>>, T> accumulator() {
return (tuple, e) -> {
List<T> list = tuple._2;
list.add(e);
if (list.size() >= this.threshold) {
this.repository.save(list);
this.repository.flush();
list = new LinkedList<>();
}
tuple = new Tuple2<>(tuple._1 + 1, list);
};
}
这不能按预期工作。元素 e 被添加到列表中,但在达到阈值后不会重置。Integer 也保持在 0,这是可以预期的,因为它是最终成员。看来我唯一的选择是使我的 Tuple2 可变并清空 List :-( 任何建议如何使用不可变元组解决这个问题?