在java中树形列表信息的查询

本文探讨了在Java项目中处理树形列表数据查询的两种方法:传统遍历和快速遍历。传统方法从顶层节点开始递归查询子节点,而快速遍历利用level字段和Multimap实现更快的子节点获取。虽然快速遍历在全树遍历时稍慢,但在查找特定节点的子节点时更具优势,尤其在树结构较大时。
摘要由CSDN通过智能技术生成

  在IT的项目开发中,有时我们会经常遇到树形列表数据的查询等的相关操作,比如下面的情况就是如此:

这里写图片描述

传统的遍历方式

  树形列表数据最基本的展示一共需要三个字段,分别是id,pId以及name。其中id是该条信息的主键,一般是自增的,并且不允许重复。pId是该条信息所归属的父节点的id,该pId允许重复,而顶级的节点其由于没有父节点,故其父节点字段往往以0进行标识。而name就是该条数据所展示的名称字段。

  传统的树形列表数据的查询方式是先查询pId为0的数据,然后以该数据的id作为子节点pId的查询条件,用此来查询其直接的子节点数据;再以此子节点的id作为下一层数据的pId查询条件,依次类推,逐渐完成整个树形列表数据的查询操作。

源码如下:

Tree

package com.thinkgem.jeesite.entity;

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@Builder
@ToString
public class Tree {
   
    private int id;
    private String name;
    private int pId;
    private String level;
}

TraditionTest

package com.thinkgem.jeesite.tree;

import com.baishun.common.utils.ListContainer;
import com.google.common.collect.Lists;
import com.thinkgem.jeesite.entity.Tree;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

/**
 * 传统的查找方式
 */
@Slf4j
public class TraditionTest {
   

    private ListContainer<Tree> treeContainer = ListContainer.newListContainer();

    /**
     * 链式调用添加数据
     */
    @Before
    public void initDB(){
        Tree tree = Tree.builder()
                .id(1)
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值