英文:
Create 2 objects for each element of a Java stream
问题
以下是翻译好的内容:
有没有一种方法可以为流的每个元素创建两个不同的对象,并最终将它们全部收集起来?
例如,
如果我有一个 List<String> stringList
,并且有一个名为 GoodClass
的类,其中包含一个默认构造函数和一个 customConstructor
,我希望在一个流中创建两个对象,并在最后将它们收集起来。
stringList
.stream()
.map(GoodClass::new)
.addAnotherObject(element -> new GoodClass(element.customConstructor())) // 不是有效的代码行,仅用于表示所需内容
.collect(Collectors.toList());
可能流并不是实现我尝试的目标的正确方法。但问题已提交给专家们。
英文:
Is there a way to create 2 different objects for each element of a stream and collect them all at last?
For example,
if I have a List<String> stringList
and have a class GoddClass
with a default and a customConstructor
, I want to create 2 objects in one stream and collect at last
stringList
.stream()
.map(GoddClass::new)
.addAnothrObject(GoddClass::customConstructor) // Not a valid line, Just to depict what is needed
.collect(Collectors.toList());
One stream might not be the right solution to achieve what I'm trying. But the question is out for experts.
答案1
得分: 6
.flatMap
与Stream.of
在这种情况下最适用。
stringList
.stream().flatMap(str -> Stream.of(new GoodClass(), new GoodClass(str)))
.collect(Collectors.toList());
英文:
.flatMap
with Stream.of
is most suitable in this case.
stringList
.stream().flatMap(str -> Stream.of(new GoddClass(), new GoddClass(str))
.collect(Collectors.toList());
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论