我有一个包含对象列表的对象列表,我想获取容器中的一个项目。这可能与lambda有关,还是只需要为循环嵌套?
以下是我用于查找项目的当前方法:
for (Container c : containers) {
for (Item i : c.getItems() {
if (i.getKey().equals(key)) return i;
}
}
答案 0 :(得分:6)
嵌套的for循环运行良好。如果你想使用流来做,你可以这样做:
containers.stream()
.flatMap(c -> c.getItems().stream())
.filter(i -> i.getKey().equals(key))
.findFirst();
如果找到Optional
,则返回Item
,否则返回空Optional
。