private List<DocumentationClassification> getByParent(DocumentationClassification classification) {
List<DocumentationClassification> list = new ArrayList<>();
list.add(classification);
if (!"3".equals(classification.getClassificationLevel())) {
List<DocumentationClassification> classificationList = getByParentId(classification.getId().toString());
if (classificationList.size() > 0) {
for (DocumentationClassification classification1 : classificationList) {
list.addAll(getByParent(classification1));
}
}
return list;
} else {
return list;
}
}
debug看看不就知道了
1、有没有写退出条件
2、退出条件是否可以被执行到
list不在递归中new会好一点,省得浪费空间,这样可能好一点:
private void getByParent(DocumentationClassification classification, List<DocumentationClassification> list) {
list.add(classification);
if (!"3".equals(classification.getClassificationLevel())) {
List<DocumentationClassification> classificationList = getByParentId(classification.getId().toString());
// null会报错,empty集合不进for-each
if (classificationList != null) {
for (DocumentationClassification classification1 : classificationList) {
getByParent(classification1,list);
}
}
}
}
可以定义一个计数器,循环一次加一,截止到10w退出报错