我遇到了一些问题,我需要遍历层次结构并比较一些值,而我得到匹配的那一刻需要返回结果。这是我的完整用例
我得到Collection<Categories> categoryList
和 A Collection<MyCustomObject>
, MyCustomObject{ // 一些属性 private Category category }
我需要将类别代码与 MyCustomObject 下的类别代码进行比较,并且需要将 MyCustomObject 与第一个匹配项发回。
对于这个比较我需要遍历 Collection iw 的层次结构如果在当前类别中没有找到匹配需要通过调用获取类别列表
categoryList.getSuperCategories()
然后向上。
我虽然是递归方法调用,但似乎这在我的情况下不起作用,好像我一直遍历第一个类别直到根我无法跟踪第二个类别。
我正在尝试一些东西(没有完成也没有正常工作)
public ProductAllotmentData getProductAllotmnet(final Collection<CategoryModel> categoryModelList)
{
if (CollectionUtils.isNotEmpty(categoryModelList))
{
final List<ProductAllotment> productAllotmentList = getProductAllotmentEntries();
if (CollectionUtils.isNotEmpty(productAllotmentList))
{
for (final CategoryModel model : categoryModelList)
{
for (final ProductAllotmentData productAllotmentData : productAllotmentList)
{
if (model.getCode().equals(productAllotmentData.getAllotmentCategory().getCode()))
{
return ProductAllotmentData;
}
else
{
return getAllotmentForCategory(model.getAllSupercategories(), productAllotmentyData);
}
}
}
}
}
return null;
}
--
public ProductAllotmentData getAllotmentForCategory(final Collection<CategoryModel> categoryModelList,
final ProductAllotmentData productAllotmentaData)
{
ProductAllotmentData allotmentData = null;
for (final CategoryModel model : categoryModelList)
{
if (model.getCode().equals(productAllotmentData.getAllotmentCategory().getCode()))
{
allotmentEntryData = productAllotmentData;
}
else
{
return getAllotmentForCategory(model.getSupercategories(), productAllotmentData);
}
}
return allotmentEntryData;
}
我想到的另一个选择是创建一种堆栈并将所有类别放入其中并一次弹出一个比较它们并发回第一个匹配项而忽略堆栈中的其余项目但我正在寻找更好的和灵活的解决方案。
问题
我不确定如何遍历每个类别的层次结构以比较其代码。 getAllotmentForCategory
是我试图遍历我的类别层次结构的地方。
在这方面的任何帮助都非常好