我有一个包含对象列表的对象列表,我想获得容器中的一个项目.这可能与lambda有关,还是只需要为循环嵌套?
这是我用于查找项目的当前方法:
for (Container c : containers) {
for (Item i : c.getItems() {
if (i.getKey().equals(key)) return i;
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套的for循环效果很好.如果您想使用流来执行此操作,则可以执行以下操作:
containers.stream()
.flatMap(c -> c.getItems().stream())
.filter(i -> i.getKey().equals(key))
.findFirst();
Run Code Online (Sandbox Code Playgroud)
这将返回Optional
包含Item
if的内容,否则为空Optional
.