【发布时间】:2018-03-02 10:31:13
【问题描述】:
是否可以使用stream api 将下面的 for 循环转换为单行?
List<QuestionAnswer> questionAnswerCombinations = new ArrayList<>();
for (Question question : questions) {
for (String answer : question.getAnswers()) {
questionAnswerCombinations.add(new QuestionAnswer(question.getLabel(), answer ));
}
}
我虽然使用flatMap,但是当我这样做时我失去了question。
将此嵌套循环转换为单线的正确方法是什么?
注意:如果需要,我可以添加Question类的数据结构,但除了使用推断之外没有其他复杂的地方。
更新:我要做的基本上是将所有问题+答案组合收集到另一个列表中。如:
Question 1
-Answer a
-Answer b
-Answer c
Question 2
-Answer x
-Answer y
Question 1, Answer a
Question 1, Answer b
Question 1, Answer c
Question 2, Answer x
Question 2, Answer y
【问题讨论】:
-
你的平面图是什么样子的?
-
我对问题的更新是否回答了您的问题? @StefanBeike
-
questions.stream.flatMap(q -> q.getAnswers().stream().map(ans -> new QuestionAnswer(q.getLabel(), ans))).collect(Collectors.toList())可以吗? -
是的@VenkataRaju。您可以将其发布为答案,以便我接受。既然你是第一个发布它的人,我相信它是有效的。
标签: java java-stream nested-loops flatmap