Java流过滤器嵌套对象返回顶级字段

Java流过滤器嵌套对象返回顶级字段,java,java-stream,Java,Java Stream,我的模型中有以下层次结构: class Item { String name; ... List<SubItem> subItems; } class SubItem { String name; ... List<String> ids; } 我想知道使用Java8是否可以达到同样的效果 我找到了这个答案,但我还需要返回一些顶级字段(名称) 您可以使用flatMap: return items.stream()

我的模型中有以下层次结构:

class Item {
    String name;
    ...
    List<SubItem> subItems;
}

class SubItem {
    String name;
    ...
    List<String> ids;
}
我想知道使用Java8是否可以达到同样的效果


我找到了这个答案,但我还需要返回一些顶级字段(名称)

您可以使用
flatMap

return items.stream()
            .flatMap(i -> i.getSubItems()
                           .stream()
                           .filter(si -> si.ids.contains("some value"))
                           .map(si -> new Pair<String, String>(i.name, si.name)))
            .findFirst()
            .orElse(null);
returnitems.stream()
.flatMap(i->i.getSubItems()
.stream()
.filter(si->si.ids.contains(“一些值”))
.map(si->新对(i.name,si.name)))
.findFirst()
.orElse(空);
return items.stream()
            .flatMap(i -> i.getSubItems()
                           .stream()
                           .filter(si -> si.ids.contains("some value"))
                           .map(si -> new Pair<String, String>(i.name, si.name)))
            .findFirst()
            .orElse(null);