在下面的代码中,我不喜欢在流外部定义List<EmailDraft>
列表。我很确定有一种方法可以让流处理直接返回List<EmailDraft>
列表,但我不确定该怎么做。有什么想法吗?
List<EmailDraft> drafts /* <-- don't like this */
= new LinkedList<>();
List<SyndFeed> feeds
= evnt.getFeeds();
feeds.stream().forEach(
sf -> sf.getEntries().stream().forEach(se -> {
EmailDraft ed = new EmailDraft();
// Title
ed.setTitle(sf.getTitle());
// ....
// Add to list
drafts.add(ed); /* <-- don't like this either */
})
);
最佳答案
您可以在供稿上使用flatMap
,并在列表中使用collect
所有电子邮件草稿,如下所示:
List<EmailDraft> emailDrafts =
feeds.stream()
.flatMap(
sf -> sf.getEntries().stream().map(se -> {
EmailDraft ed = new EmailDraft();
// Title
ed.setTitle(sf.getTitle());
return ed;
})
).collect(Collectors.toList());
关于java - 如何使用Java流将子生成的列表组合到一个列表中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48770892/