java生成树(generateTree)
生活随笔
收集整理的這篇文章主要介紹了
java生成树(generateTree)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考:https://blog.csdn.net/mynamepg/article/details/79802885//生成權限樹
public List<Tree> generateTree(List<Tree> treeList) {if (CollectionUtils.isEmpty(treeList)) {return null;}Map<Long, Tree> nodeMap = new HashMap<>();for (Tree tree : treeList) {nodeMap.put(tree.getId(), tree);}List<Tree> rootList = new ArrayList<>();//建立父子關系
for (Tree node : nodeMap.values()) {Long parentId = node.getParentId();if (parentId == null) {rootList.add(node);continue;}if (nodeMap.containsKey(parentId)) {Tree parentNode = nodeMap.get(parentId);parentNode.addChildNode(node);}}// sort
for (Tree t : nodeMap.values()) {List children = t.getChildren();if (children != null && children.size() > 0) {t.sortChildren(children);}}
Collections.sort(rootList);
return rootList;
} /**
* 具體樹節點 */
public class Tree extends TreeNode implements Comparable<CostCenterNode>{
private String code;private int position;private int employeeCount;@Overridepublic boolean isRoot(String parentId) {if (StringUtil.isEmpty(parentId)) {return true;}return false;}@Overridepublic void sortChildren(List children) {Collections.sort(children);}public CostCenterNode(CostCenterDO centerDO) {this.setId(centerDO.getCostId());this.setParentId(centerDO.getParentId());this.setName(centerDO.getName());this.setCode(centerDO.getCode());this.setPosition(centerDO.getPosition());this.setChildren(new ArrayList());}// getter setter@Overridepublic int compareTo(CostCenterNode o) {// 按照position升序排列if (this.position > o.getPosition()) {return 1;} else {return -1;}}
}
總結
以上是生活随笔為你收集整理的java生成树(generateTree)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于新创公司所需的icp,网文,软著和备
- 下一篇: 常见查询语句