public class TkMenuDO {
private Integer menuId;
private Integer fatherMenuId;
private String menuAddress;
private String menuRemark;
private List<TkMenuDO> children;
// 这里忽略了 get、set方法
}
import java.util.ArrayList;
import java.util.List;
public class ListUtil {
/**
* 两层循环实现建树
*/
public static List<TkMenuDO> bulid(List<TkMenuDO> treeNodes) {
List<TkMenuDO> trees = new ArrayList<>();
for (TkMenuDO treeNode : treeNodes) {
if (treeNode.getFatherMenuId().equals(0)) {
trees.add(treeNode);
}
for (TkMenuDO it : treeNodes) {
if (it.getFatherMenuId().equals(treeNode.getMenuId()) ) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<>());
}
treeNode.getChildren().add(it);
}
}
}
return trees;
}
/**
* 使用递归方法建树
*/
public static List<TkMenuDO> buildListTree(List<TkMenuDO> listTms) {
List<TkMenuDO> trees = new ArrayList<>();
for (TkMenuDO tm : listTms) {
if (tm.getFatherMenuId().equals(0)) {
trees.add(findChildren(tm,listTms));
}
}
return trees;
}
/**
* 递归查找子节点
*/
public static TkMenuDO findChildren(TkMenuDO tm, List<TkMenuDO> listTms) {
tm.setChildren(new ArrayList<>());
for (TkMenuDO it : listTms) {
if(tm.getMenuId().equals(it.getFatherMenuId())) {
if (tm.getChildren() == null) {
tm.setChildren(new ArrayList<>());
}
tm.getChildren().add(findChildren(it,listTms));
}
}
return tm;
}
public static void main(String[] args) {
List<TkMenuDO> list = new ArrayList<>();
TkMenuDO t = new TkMenuDO();
t.setMenuId(1);
t.setFatherMenuId(0);
list.add(t);
TkMenuDO t1 = new TkMenuDO();
t1.setMenuId(2);
t1.setFatherMenuId(0);
list.add(t1);
TkMenuDO t2 = new TkMenuDO();
t2.setMenuId(3);
t2.setFatherMenuId(1);
list.add(t2);
TkMenuDO t3 = new TkMenuDO();
t3.setMenuId(4);
t3.setFatherMenuId(3);
list.add(t3);
TkMenuDO t4 = new TkMenuDO();
t4.setMenuId(5);
t4.setFatherMenuId(3);
list.add(t4);
TkMenuDO t5 = new TkMenuDO();
t5.setMenuId(6);
t5.setFatherMenuId(5);
list.add(t5);
TkMenuDO t6 = new TkMenuDO();
t6.setMenuId(7);
t6.setFatherMenuId(2);
list.add(t6);
TkMenuDO t7 = new TkMenuDO();
t7.setMenuId(8);
t7.setFatherMenuId(0);
list.add(t7);
List<TkMenuDO> l = buildListTree(list);
System.out.println(l);
}
}
版权声明:本文为belialxing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。