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

问题描述 投票:3回答:1

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

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

class SubItem {
    String name;
    ...
    List<String> ids;
}

我想找到一个Item及其SubItem,其中subItem.ids列表包含一些特定的ID,并返回PairItem.nameSubItem.name。我假设所有名称和ID都是唯一的,所以我只对第一个结果感兴趣。

我可以使用两个foreach循环执行此操作:

for (Item item : items) {
    for (SubItem subItem : item.subItems) {
        if (subItem.ids.contains("some value")) {
            return Pair<String, String>(item.name, subItem.name)
        }
    }
}

我想知道我是否可以使用Java 8 Streams达到相同的结果?

我找到了这个答案How to filter nested objects with Stream,但我还需要返回一些顶层字段(名称)。

java java-stream
1个回答
7
投票

您可以使用flatMap

© www.soinside.com 2019 - 2024. All rights reserved.