1.调用方法
/**
* 遍历目录树,得到所有的目录列表,并修改了名称以表示层次。* @param topList顶级目录List集合
* @return
*/
public List<Category> getAllCategory(List<Category> topList) {
List<Category> list = new ArrayList<Category>();
walkCategoryTrees(topList, "┣", list);
return list;
}
2.递归方法实现
* @param topList 顶级栏目List集合
* @param prefix 分隔符
* @param list 数据容器
*/
private void walkCategoryTrees(Collection<Category> topList, String prefix, List<Category> list) {
/**遍历顶级栏目,把顶级栏目放入数据容器中*/
for (Category top : topList) {
// 顶点
Category copy = new Category(); // 原对象是在Session中的对象,是持久化状态,所以要使用副本。
copy.setCid(top.getCid());
copy.setCtype(prefix+top.getCtype());
list.add(copy);
/**遍历子数写入循环中递归*/
walkCategoryTrees(top.getChildren(), " " + prefix, list); // 使用的是全角的空格
}
}