在下面的代码中,我不喜欢在流外部定义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/

10-10 09:27