【发布时间】:2019-06-21 22:22:14
【问题描述】:
我的函数有两个字符串参数——“Pizza”和“Chips”。我想使用流来返回其“foods”键的内容与这两个字符串匹配的作者
List<String> collection = Arrays.asList("Pizza", "Chips");
private static List<Map<String, Object>> authors = Arrays.asList(
ImmutableMap.of("id", "author-1",
"firstName", "Adam",
"lastName", "Awldridge",
"foods", Arrays.asList("Pizza", "Chips")),
ImmutableMap.of("id", "author-2",
"firstName", "Bert",
"lastName", "Bruce",
"foods", Arrays.asList("Pizza", "Fish")),
... // other authors
);
这是我对流的尝试:
return authors
.stream()
.filter(authors.stream()
.flatMap(author -> author.get("foods"))
.findAny(queryFoods))
.findFirst().orElse(null);
我想返回食物与我的查询匹配的第一作者。我认为主要的困难是组织数据 - 不幸的是,我无法进行以下转换。
.flatMap(author -> (List<String>) author.get("foods"))
另外,这可能会流过作者太多次(我应该在刚刚制作的流上使用 .filter
authors.stream()
【问题讨论】:
-
您希望作者匹配您查询中的所有食物还是一个匹配就足够了?
-
我只查找所有匹配项
标签: java list dictionary java-stream