我遇到了一些問題,我需要遍歷層次結構並比較一些值,並且我得到匹配的時刻需要返回結果。這裏是我完整的用例通過層次結構(Java)遞歸調用
我越來越Collection<Categories> categoryList
和A Collection<MyCustomObject>
, MyCustomObject {// 一些屬性 私人範疇類別 }
我需要類別的代碼類型的代碼比較來MyCustomObject下,需要返回MyCustomObject與第一次匹配。
爲了進行比較,我需要遍歷集合i.w的層次結構,如果在當前類別中找不到匹配項,則需要調用 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
是我想要遍歷我的類別層次結構的地方。
在這方面的任何幫助,真的很不錯
有時候你會使用真正的長變量名稱DoesntImproveClarity我看不到你在遞歸的地方。你的問題是什麼? –
@PeterLawrey這是一個偉大的! –
'我在某個問題上遇到了問題' - 你到現在還沒有告訴你的問題.. –