【发布时间】:2018-07-19 00:38:26
【问题描述】:
我是 Java 8 中的流的新手。我正在努力弄清楚如何使用流在列表上实现嵌套的 for 循环。一个列表包含消息,消息中的一个字段是作者的 id(遗憾的是,不是 obj 引用)。另一个列表是作者,作者中的一个字段是作者 ID。代码需要为消息列表中的每条消息在作者列表中找到匹配的作者。我拥有的工作 Java 代码(不使用流或 lambdas)如下,我的问题是如何使用流重写它?我已经尝试了几件事,我认为需要一个 flatMap 和一个过滤器,但我似乎无法做到。
public void showAuthors(List<Message> messages, List<Authors> authors) {
String authorName=null;
for (Message message : messages) {
int authorId = message.getAuthorId();
for (Authors author : authors) {
if (author.getId() == authorId)
authorName = author.getFullName();
break;
}
System.out.println("Message id is " + message.getId() +
" author is " + authorName);
}
}
我在这里查看了一些类似的问题,但我似乎无法正确回答。
感谢任何帮助!
==============================================
更新:作者列表中有一些 Id 字段的空数据。这要求我使用带有流操作的过滤器来创建 AuthorId,Name 的映射。
【问题讨论】:
标签: java java-stream