【发布时间】:2020-02-11 13:19:04
【问题描述】:
尝试使用 Stream/Collectors 找到正确的方法来做这样的事情:
我有一个桶类型包装器(让它在引擎盖下有 StringBuilder),它有一个字符限制(每个桶 25 个字符)。
我有一个条目的输入流,满足少于 20 个符号的要求。
每个流条目都使用.map(...) 操作进行处理,在条目末尾添加*。
我想通过收集器对此类条目的流进行分区(如果这是正确的词)并在不丢失完整性的情况下将它们收集到存储桶中。
输入:
aaaaaaaaaaaaaaaa
aaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaa
输出:
---- bucket 1 ----
aaaaaaaaaaaaaaaa *
aaaaaa *
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
---- bucket 2 ----
aaaaaaaaaaaaaaaaaa *
我知道如何使用常规循环来实现这一点,如何使用 Stream/Collectors?
【问题讨论】:
-
example =
1,2,3,4变成[ [1,2],[3,4] ]这是你想要的吗?? -
在非常基本的方法中 - 是的。我想将流的元素收集到一个状态容器中,一旦满足某些条件,它将被一个新的替换。最好把它想象成“我想把多张图片放到一个word文档页面,一旦页面没有空间,就移到另一个页面”
-
@Holger,我想获取元素,进行一些基于字符串的转换,然后将它们存储在具有字符限制的包装器中。意思是,如果我有一个已经满足 199/200 字符限制的存储桶,我想用一个新存储桶替换当前存储桶。 linkedList 和其他内容不相关,仅作为我尝试使用 Collectors 进行的流程的示例。
-
好的,删除了之前版本的问题。看看这个版本是否正确。
-
当你“知道如何使用常规循环来实现这一点”时,你应该包括这个。作为一个工作代码示例可以比大多数散文更好地记录任务。此外,当不存在任务的内置收集器时,自定义收集器的代码无论如何都会与循环体的代码共享很多,这使其成为一个很好的起点。
标签: java java-stream collectors