java web菜单_java web项目 树形菜单排序算法

此篇博客介绍如何使用Java实现一个TreeUtil类,通过SiteResource模型和TreeMessage类构建树形结构,用于管理网站资源的权限层级。它展示了如何获取顶层菜单、递归构建子菜单并进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.cn.cs.util;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importcom.cn.cs.model.SiteResource;public classTreeUtil {private Listnodes;public TreeUtil(Listnodes) {this.nodes=nodes;

}/*** 创建树

*@return

*/

public ListbuildTree(){

List list = new ArrayList();

//获取最顶级菜单for(SiteResource node : nodes) {if(node.getNodeCode().length()==2) {

TreeMessage tm= newTreeMessage();

tm.setId(Integer.parseInt(node.getId()));

tm.setNodeIndex(Integer.parseInt(node.getNodeIndex().toString()));

tm.setNodeCode(node.getNodeCode());

tm.setText(node.getName());

tm.setChecked(true);

list.add(tm);

}

}

list=getSortChildren(list);for(TreeMessage node : list) {

build(node);

}returnlist;

}/*** 构建权限树

* 获取菜单中的所有子菜单,并添加到父菜单中*/

private voidbuild(TreeMessage node){

List children =getChildren(node);if (!children.isEmpty()) {

node.setChildren(children);for(TreeMessage child : children) {

build(child);

}

}

}/**

* @Description: TODO 获取子节点

* @return*/

private ListgetChildren(TreeMessage node){

List children = new ArrayList();

String nodeCode=node.getNodeCode();for(SiteResource child : nodes) {if(nodeCode.equals(child.getPcode())) {

TreeMessage tm= newTreeMessage();

tm.setId(Integer.parseInt(child.getId()));

tm.setNodeCode(child.getNodeCode());

tm.setNodeIndex(Integer.parseInt(child.getNodeIndex().toString()));

tm.setText(child.getName());

tm.setChecked(true);

Attributes attributes= newAttributes();

attributes.setUrl(child.getUrl());

tm.setAttributes(attributes);

children.add(tm);

}

}returngetSortChildren(children);

}/**

*

* @Title: getChildren

* @Description: TODO 获取排序子节点

* @param node

* @return*/

private List getSortChildren(Listchildren){

ComparatorResource my= newComparatorResource(); //这是一个自定义比较器,按照下标顺序排序

Collections.sort(children,my) ;returnchildren;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值