请教各位,第一张图是数据结构,第二个是要做成的原型。我自己不知道怎么设计这个树状图的类,请指点一下!
1条回答 默认 最新
- 路人夹饼 2019-05-31 10:06关注
可以写一个Tree的类
public class Tree extends BaseDomain {private String id; private String key; private String icon; private String title; private String value; private String text; private String code; private String mtype; private String type; /** * 部门的特殊个别字段 * 1.部门 / 2.岗位 的编码 */ private String number; private Double order; private Double sort; private String href; private String component; private List<Tree<T>> children; private String parentId; private boolean hasParent = false; private boolean hasChildren = false; private Date createTime; private Date modifyTime; public void initChildren(){ this.children = new ArrayList<>(); } } 在写一个工具类 public class TreeUtil { protected TreeUtil() { } private final static String TOP_NODE_ID = "0"; /** * 用于构建菜单 * * @param nodes nodes * @param <T> <T> * @return <T> Tree<T> */ public static <T> Tree<T> build(List<Tree<T>> nodes) { if (nodes == null) { return null; } List<Tree<T>> topNodes = new ArrayList<>(); nodes.forEach(node -> { String pid = node.getParentId(); if (pid == null || TOP_NODE_ID.equals(pid)) { topNodes.add(node); return; } for (Tree<T> n : nodes) { String id = n.getId(); if (id != null && id.equals(pid)) { if (n.getChildren() == null) n.initChildren(); n.getChildren().add(node); node.setHasParent(true); n.setHasChildren(true); n.setHasParent(true); return; } } if (topNodes.isEmpty()) topNodes.add(node); }); Tree<T> root = new Tree<>(); root.setId("0"); root.setParentId(""); root.setHasParent(false); root.setHasChildren(true); root.setChildren(topNodes); root.setText("root"); return root; }
}
写完了这两个在写业务层
一个构建书的方法
private void buildTrees(List> trees, List menus, List ids) {
menus.forEach(menu -> {
ids.add(menu.getId().toString());
Tree tree = new Tree<>();
tree.setId(menu.getId().toString());
tree.setKey(tree.getId());
tree.setParentId(menu.getParentId().toString());
tree.setText(menu.getName());
tree.setTitle(tree.getText());
tree.setIcon(menu.getIcon());
tree.setComponent(menu.getComponent());
tree.setCreateTime(menu.getCreateTime());
tree.setCreateTime(menu.getCreateTime());
tree.setHref(menu.getHref());
tree.setSort(menu.getSort());
tree.setCode(menu.getCode());
tree.setMtype(menu.getMtype());
trees.add(tree);
});
}Map<String, Object> result = new HashMap<>(); List<Dept> depts = findDepts(dept, request); List<Tree<Dept>> trees = new ArrayList<>(); buildTrees(trees, depts); Tree<Dept> deptTree = TreeUtil.build(trees); result.put("rows", deptTree); result.put("total", depts.size());
解决 无用评论 打赏 举报
悬赏问题
- ¥15 解决一个加好友限制问题 或者有好的方案
- ¥15 关于#java#的问题,请各位专家解答!
- ¥15 急matlab编程仿真二阶震荡系统
- ¥20 TEC-9的数据通路实验
- ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
- ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
- ¥30 求解达问题(有红包)