Flask接口签名sign原理与实例代码浅析
234
2023-06-17
Java创建树形结构算法实例代码
在javaWeb的相关开发中经常会涉及到多级菜单的展示,为了方便菜单的管理需要使用数据库进行支持,本例采用相关算法讲数据库中的条形记录进行相关组装和排序讲菜单组装成树形结构。
首先是需要的JavaBean
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
/**
*
*/
public class MenuExTeofwxt implements Serializable {
/**
* 菜单ID
*/
private Long id;
/**
* 菜单名称
*/
private String name;
/**
* 菜单地址
*/
private String url;
/**
* 菜单图标
*/
private String icon;
/**
* 父菜单ID
*/
private Long parentId;
/**
* 子菜单
*/
private List
/**
* 菜单顺序
*/
private Integer ordby;
/**
* 菜单状态
*/
private String state;
//省略Getter和Setter
/**
*
*
*
*/
public void sortChildren() {
Collections.sort(children, new Comparator
@Override
public int compare(MenuExt menu1, MenuExt menu2) {
int result = 0;
Integer ordby1 = menu1.getOrdby();
Integer ordby2 = menu2.getOrdby();
Long id1 = menu1.getId();
Long id2 = menu2.getId();
if (null != ordby1 && null != ordby2) {
result = (ordby1 < ordby2 ? -1 : (ordby1 == ordby2 ? 0 : 1));
} else {
result = (id1 < id2 ? -1 : (id1 == id2 ? 0 : 1));
}
return result;
}
});
// 对每个节点的下一层节点进行排序
for (Iterator
it.next().sortChildren();
}
}
public List
return children;
}
public void setChildren(List
this.children = children;
}
}
Java算法
public static List
List
if (null != menus && !menus.isEmpty()) {
// 创建根节点
MenuExt root = new MenuExt();
root.setName("菜单根目录");
// 组装Map数据
Map
for (MenuExt menu : menus) {
dataMap.put(menu.getId(), menu);
}
// 组装树形结构
Set
for (Entryhttp://
MenuExt menu = entry.getValue();
if (null == menu.getParentId() || 0 == menu.getParentId()) {
root.getChildren().add(menu);
} else {
dataMap.get(menu.getParentId()).getChildren().add(menu);
}
}
// 对树形结构进行二叉树排序
root.sortChildren();
treeMenus = root.getChildren();
}
return treeMenus;
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~