在做公司项目的时候遇到的一个小问题
将一个存放所有数据的list转成具有层级关系的list
如下图是希望得到的结果,初始结构是所有数据存放在一个list里面
CategoryVO{
categoryId 分类ID
parentId 父级ID
categoryLevel 分类层级
children 子分类(ArrayList)
}
map ->HashMap<分类id, 分类VO>
result ->ArrayList<分类VO>
for (CategoryVO vo : originList) {
map.put(vo.getCategoryld(), vo);//map存储id->VO的映射
}
for (CategoryVO vo : originList) {
if (1.equals(vo.getCategoryLevel())){
result.add(vo); //是第一级则放入result列表中
}else {
CategoryVO parentCategory = map.get(vo.getParentld();
if (parentCategory != null) { //不是第一级则放入父级children列表中
parentCategory.getChildren().add(vo);
}
}
}
优点:支持任意层级,只查询一次数据库,代码简洁。
缺点:可读性较差,不适合数据量过大场景。