如何在java中验证列表中的对象是否都具有父子关系

w8f9ii69  于 2022-10-22  发布在  Java
关注(0)|答案(1)|浏览(168)

我有一个类别列表,我试图找出这些类别是否相互关联。例如,HW、Phones、Iphone和13 Pro是类别。每个类别都有categoryid和parentId字段。
硬件->手机->IPhone->13 Pro
在上面的例子中,HW的parentId为null,因为它是根,Phones的parentId为HW,Iphone的parentId为Phones,13Pro的parentId为Iphone。我想验证父子关系以及类别的顺序(意思是,13 Pro是Iphone的子级,Iphone是Phones的子级、Phones是HW的子级),如果它们不在顺序中,例如:HW->13 Pro->Iphone->Phones,则我需要抛出错误,说明顺序不正确),因为我从外部服务获得此列表。此外,该命令不能是分级的。列表可以是任何顺序。我正在尝试为它编写Java代码。感谢任何帮助。提前谢谢。

List<Category> categoryList = getCategoryList();
categoryList.stream().forEach(category -> {
if(category.getParentId().isEmpty()){
String rootCategory = category.getId();
if(category.getParentId().equals(rootCategory)){
String category2 = category.getId();
if(category.getParentId().equals(category2)){
String category3 = category.getId();
if(category.getParentId().equals(category3)){
String category4 = category.getId();
}}}}}
);
2nbm6dog

2nbm6dog1#

看起来您需要在两个方向遍历树,因此您需要构建反映这一点的数据结构。
向Category类中添加parentCategory字段,以及子类别列表。在新方法Category getCategoryTree()中初始化这些新字段,该方法将返回根类别。
初始化树有点棘手,但一旦完成,您将能够在类别层次结构中自由上下导航。

相关问题