【发布时间】:2021-05-21 14:10:33
【问题描述】:
我需要获取给定记录并使用其所有子记录的标识符无限填充一个列表(即原始项目的所有子记录、子项的所有子记录、孙子的所有子记录等)我目前有一种方法可以产生我想要的东西,但它不是最容易阅读的方法,它使用迭代而不是递归。我想知道是否有一种更简洁的方法来实现我想要的,可能使用递归调用,但主要目的是使代码更易于阅读。目前的实现如下
public List<String> getAllChildRecords(targetRecord) {
final List<String> allChildRecordIds = new ArrayList<>();
final List<String> recordIdsForQuery = new ArrayList<>();
final List<String> queryResults = new ArrayList<>();
recordIdsForQuery.add(targetRecord);
while (!recordIdsForQuery .isEmpty()) {
for (final String queryParentId : recordIdsForQuery ) {
queryResults.addAll(
[DBAccessLayerClass].[getChildRecordIds](queryParentId));
}
allChildRecordIds .addAll(queryResults);
recordIdsForQuery .clear();
recordIdsForQuery .addAll(queryResults);
queryResults.clear();
}
return allChildRecordIds
}
【问题讨论】: