gpt4 book ai didi

java - 如何使用 Java 8 Stream 展平列表的嵌套映射?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:00:06 24 4
gpt4 key购买 nike

<分区>

我有一个看起来像这样的结构:

public class Category {
private String tag;
private String name;
private String description;
private List<Item> items;
}

Item 看起来像这样

public class Item {
private String itemTag;
private String itemName;
private String itemType;
private Integer itemStatus;
private List<Item> items;
}

这不是最好的设计 - 我知道,但我无权更改该设计。

我试图找到一种方法将此结构展平为单个 Stream 并找到具有匹配 itemTagItem。使用此代码:

String tagToFind = "someTag";
List<Category> categories = getCategoriesList(); // <-- returns a list of Category
Item item = categories.stream()
.flatMap(category -> category.getItems().stream())
.filter(tagToFind.equals(item.getItemTag()))
.findFirst();

但这只会搜索项目列表的一级。如果我想更深入一点,我可以简单地做:

Item item = categories.stream()
.flatMap(category -> category.getItems().stream())
.flatMap(item->item.getItems().stream()))
.filter(tagToFind.equals(item.getItemTag()))
.findFirst();

效果很好。但是我正在尝试找到一种更具可扩展性的方法来做到这一点,它可以像嵌套列表一样深入。有没有一种有效的方法来做到这一点?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com