gpt4 book ai didi

java - 扩展现有的流收集器实例

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:17 25 4
gpt4 key购买 nike

我需要一个与 Collectors.toSet() 几乎相同的收集器,但具有自定义的整理器。我很想能够做这样的事情:

myCollector = Collectors.toSet();
myCollector.setFinisher(myCustomFinisher);

然后完成,但这似乎不可能。我能看到的唯一替代方案是它基本上使用 Collector.of() 重新创建 Collectors.toSet(),这不是很干。

有没有办法采用现有的收集器并如上所述对其进行修改?

编辑

一些答案​​推荐了这样的东西:

  Collector<T, ?, Set<T>> toSet = Collectors.toSet();
return Collector.of(
toSet.supplier(),
toSet.accumulator(),
toSet.combiner(),
yourFinisher,
toSet.characteristics());

但是我的自定义整理器实际上并没有返回一个集合;它使用累积的集合来返回其他东西。它这样做的事实让我陷入了泛型 hell ,我仍在翻找......

最佳答案

这正是collectingAndThen(collector,finisher)

自定义整理器不会替换旧的整理器(如果有的话),而是与它组合(如 oldFinisher.andThen(newFinisher) ),但是 toSet() 的当前实现没有整理器(一个身份终结者)无论如何。

所以您所要做的就是collectionAndThen(toSet(),myCustomFinisher)...

关于java - 扩展现有的流收集器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45376284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com