单表返回树状数据,同一层级的数据需要根据sort_index字段进行升序排序。java实现
时间: 2024-03-15 11:44:20 浏览: 66
假设你已经从数据库中查询到了所有的树状数据,并存储在一个List中,每个对象包含一个parent_id字段表示父节点ID,以及一个sort_index字段表示排序顺序。
为了将这个List转换成树状结构,考虑使用递归算法,每次递归查找当前节点的所有子节点,并进行排序,最后返回一个节点对象,包含该节点以及其所有子节点。
下面是Java代码实现:
```java
public List<Node> buildTree(List<Node> nodeList, long parentId) {
List<Node> treeList = new ArrayList<>();
for (Node node : nodeList) {
if (node.getParentId() == parentId) {
List<Node> children = buildTree(nodeList, node.getId());
children.sort(Comparator.comparingInt(Node::getSortIndex));
node.setChildren(children);
treeList.add(node);
}
}
return treeList;
}
```
其中,Node表示树状结构中的节点对象,包含如下属性:
```java
public class Node {
private long id;
private long parentId;
private int sortIndex;
private List<Node> children;
// getter, setter, constructor
}
```
使用方法如下:
```java
List<Node> nodeList = // 从数据库中查询所有的节点数据
List<Node> treeList = buildTree(nodeList, 0); // 从根节点开始构造树状结构
```
注意,上述代码中的buildTree方法中的parentId初始值为0,表示从根节点开始构造树状结构。如果你的根节点ID不是0,需要根据实际情况修改该值。
阅读全文