Java 8过滤列表中的列表

时间:2016-08-22 15:19:24

标签: java lambda

我有一个包含对象列表的对象列表,我想获取容器中的一个项目。这可能与lambda有关,还是只需要为循环嵌套?

以下是我用于查找项目的当前方法:

for (Container c : containers) {
    for (Item i : c.getItems() {
        if (i.getKey().equals(key)) return i;
    }
}

1 个答案:

答案 0 :(得分:6)

嵌套的for循环运行良好。如果你想使用流来做,你可以这样做:

containers.stream()
          .flatMap(c -> c.getItems().stream())
          .filter(i -> i.getKey().equals(key))
          .findFirst();

如果找到Optional,则返回Item,否则返回空Optional