为Java流的每个元素创建2个对象。

huangapple go评论78阅读模式
英文:

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&lt;String&gt; 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

.flatMapStream.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 -&gt; Stream.of(new GoddClass(), new GoddClass(str))
 .collect(Collectors.toList());

huangapple
  • 本文由 发表于 2020年7月26日 11:05:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/63095684.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定