Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8过滤列表中的列表_Java_Lambda - Fatal编程技术网

Java 8过滤列表中的列表

Java 8过滤列表中的列表,java,lambda,Java,Lambda,我有一个对象列表,其中包含一个对象列表,我想获取容器中的一个项目。这是否可以用lambda实现,或者只需要嵌套循环 以下是我用于查找项目的当前方法: for (Container c : containers) { for (Item i : c.getItems() { if (i.getKey().equals(key)) return i; } } 嵌套for循环运行良好。如果要使用流进行此操作,可以执行以下操作: containers.stream()

我有一个对象列表,其中包含一个对象列表,我想获取容器中的一个项目。这是否可以用lambda实现,或者只需要嵌套循环

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

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

嵌套for循环运行良好。如果要使用流进行此操作,可以执行以下操作:

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

如果找到了
项,则返回一个包含该项的
可选
,否则返回一个空的
可选

类似于
containers.stream().flatMap(c->c.getItems().stream()).filter(i->i.getKey().equals(key)).findFirst().orElse(null)@Jean FrançoisSavard我没有看到你的评论。