JDK8 根据三级分类id,向上递归找到二级和一级分类id
时间: 2024-10-28 12:07:01 浏览: 22
在JDK 8的Stream API中,如果有一个包含产品类别信息的数据结构(比如一个列表或映射),其中每个类别都有其父类别ID,你可以使用`flatMap`和`filter`方法结合来实现三级分类的递归查询。假设你有一个Category对象列表,其中每个Category有一个parentId字段表示上级分类ID:
```java
class Category {
private Long id;
private Long parentId;
// 其他属性...
}
List<Category> categories = ...; // 假设这是一个存储了所有分类的列表
// 使用Stream API获取三级分类
Optional<List<Long>> getAncestorIds(Long targetId) {
return categories.stream()
.filter(category -> category.getId().equals(targetId))
.map(Category::getParentId)
.distinct() // 确保不重复
.flatMap(id -> categories.stream()
.filter(category -> category.getParentId().equals(id))
.map(Category::getId));
}
```
这段代码首先找出目标分类(targetId),然后获取它的直接父级ID,接着递归查找那些父级ID对应的分类,直到没有更多的父级。最终返回的是一个包含目标分类及其所有上级分类ID的列表。
阅读全文