現有一張
資料庫表,按照要求,需要將這個表以樹的形式顯示,只能有這三個欄位,不能再加父級id,怎么用代碼來處理,望各位大佬給點小意見
uj5u.com熱心網友回復:
class TreeNode{
private String tId;
private String treeName;
private String treeCode;
private List<TreeNode> children;
public TreeNode(String tId, String treeName, String treeCode) {
this.tId = tId;
this.treeName = treeName;
this.treeCode = treeCode;
}
public String gettId() {
return tId;
}
public void settId(String tId) {
this.tId = tId;
}
public String getTreeName() {
return treeName;
}
public void setTreeName(String treeName) {
this.treeName = treeName;
}
public String getTreeCode() {
return treeCode;
}
public void setTreeCode(String treeCode) {
this.treeCode = treeCode;
}
public List<TreeNode> getChildren() {
return children == null ? new ArrayList<>():children;
}
public void setChildren(List<TreeNode> list) {
this.children = list;
}
}public List<TreeNode> treeBin(List<TreeNode> list){
TreeNode root = new TreeNode("root","root","root");
// 按treecode順序排序,也可以直接用sql排序
list.sort((a,b)->a.getTreeCode().compareTo(b.getTreeCode()));
Map<String,TreeNode> map = new HashMap<>();
for (TreeNode node : list) {
if (!map.containsKey(node.getTreeCode())) {
map.put(node.getTreeCode(),node);
}
String parentCode = node.getTreeCode().substring(0,node.getTreeCode().length()-3);
if (parentCode.length() == 0) {
root.getChildren().add(node);
}
if (map.containsKey(parentCode)) {
map.get(parentCode).getChildren().add(node);
}
}
return root.getChildren();
}
uj5u.com熱心網友回復:
如果你熟悉 pid 方式是如何操作的話,那么也很簡單啊。private String tid;
private String parentTreeCode;
private String treeCode;
public String getParentTreeCode() {
if (StringUtils.isNotBlank(this.treeCode)) {
return parentTreeCode.substring(0, tid.length() - 3);
}
return null;
}
注意自己先生成根節點,根節點的 treeCode=""。就可以以 pid 方式生成樹啦
uj5u.com熱心網友回復:
這方式生成出來的是個空的,啥都沒有啊
uj5u.com熱心網友回復:
這個和pid基本沒得啥關系,雖然都用到遞回,方法完全不一樣
uj5u.com熱心網友回復:
你入參list資料呢,什么樣的uj5u.com熱心網友回復:
如果你熟悉 pid 方式是如何操作的話,那么也很簡單啊。
private String tid;
private String parentTreeCode;
private String treeCode;
public String getParentTreeCode() {
if (StringUtils.isNotBlank(this.treeCode)) {
return parentTreeCode.substring(0, tid.length() - 3);
}
return null;
}
注意自己先生成根節點,根節點的 treeCode=""。就可以以 pid 方式生成樹啦
這個和pid基本沒得啥關系,雖然都用到遞回,方法完全不一樣
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/41383.html
標籤:Java EE
上一篇:Java基礎之:1.初識Java(java特點及環境搭建)
下一篇:小白求教hello world…
