创建两个类,具体看实际情况,先存着
public static List<ZaxPortalNavigation> initTree(List<ZaxPortalNavigation> listOr, int id) {
List<ZaxPortalNavigation> arrayList = new ArrayList<ZaxPortalNavigation>();
for (int i = 0; i < listOr.size(); i++) {
ZaxPortalNavigation order = listOr.get(i);
//如果有父级id与id相同,则证明当前类为orderId的子类
if (order.getParentId().equals(id)) {
//判断该子类下是否还有子类
List<ZaxPortalNavigation> listOrs = initTree(listOr, order.getId());
//如果有子类,则判断children中是否已经赋值
if (listOrs.size() > 0) {
//如果已经children已经赋值,则使用for循环将子类加入到children中
if (null != order.getEntitys() && order.getEntitys().size() > 0) {
List<ZaxPortalNavigation> chilOrder = order.getEntitys();
for (int j = 0; j < listOrs.size(); j++) {
chilOrder.add(listOrs.get(j));
}
order.setEntitys(chilOrder);
} else {//如果没有赋值,则将数据直接加入到children中
order.setEntitys(listOrs);
}
arrayList.add(order);
} else { //如果没有值,直接加入到arrayList
arrayList.add(order);
}
}
}
return arrayList;
}
public boolean getOrder(List<ZaxPortalNavigation> arrayList, ZaxPortalNavigation order) {
boolean resu = true;
for (int i = 0; i < arrayList.size(); i++) {
ZaxPortalNavigation entity = arrayList.get(i);
//如果和当前实体类重复,返回false
if (entity.getId() == order.getId()) {
resu = false;
break;
} else { //查询子类是否重复
if (null != entity.getEntitys() && entity.getEntitys().size() > 0) {
resu = getOrder(entity.getEntitys(), order);
if (!resu) {
break;
}
}
}
}
return resu;
}
本文介绍了一个用于构建导航树结构的算法实现,通过递归查找子节点并整合到父节点的children属性中,确保了树状数据结构的正确性和完整性。
807

被折叠的 条评论
为什么被折叠?



