当前位置: 代码网 > it编程>编程语言>Java > Java如何处理数据成为树状结构

Java如何处理数据成为树状结构

2024年07月26日 Java 我要评论
java处理数据成为树状结构如题所示,项目中需要将部分数据处理成为树状结构实现过程注:也可以使用sql达到该目的,但此处数据不多,故在代码中处理,主要是sql处理不是很会// 获取需要封装的数据lis

java处理数据成为树状结构

如题所示,项目中需要将部分数据处理成为树状结构

实现过程

注:也可以使用sql达到该目的,但此处数据不多,故在代码中处理,主要是sql处理不是很会

	// 获取需要封装的数据
	list<data> dataall = service.findall();
    if (collutil.isempty(dataall)) {
      return new arraylist<>();
    }
    // 获取顶层目录 项目中上级编码为空则为一级目录
    list<data> parentlist = dataall.stream()
        .filter(item -> objectutil.isempty(item.getparentnumber())).collect(collectors.tolist());

    // 获取下级目录,上级编码不为空则非一级目录
    list<data> childlist = dataall.stream()
        .filter(item -> objectutil.isnotempty(item.getparentnumber())).collect(collectors.tolist());

    // 封装树状结构
    return parentlist.stream().map(item1 -> {
      data chaptervo = new data();
      beanutils.copyproperties(item1, chaptervo);
      list<data> videovolist = childlist.stream()
          .filter(item2 -> item1.getbackgroundmanagementcategorynumber().equals(item2.getparentnumber()))
          .map(item3 -> {
            data videovo = new data();
            beanutils.copyproperties(item3, videovo);
            return videovo;
          })
		  .collect(collectors.tolist());
      chaptervo.setchildren(videovolist);
      return chaptervo;
    }).collect(collectors.tolist());

java将查出来的数据拼树

递归方法构建树

/**
* 使用递归方法建树
* @param  menutrees  子节点集合 / 返回的数据
* @return  list 
*/
public static list<dept> buildbyrecursive(list<dept> menutrees) {
    list<dept> trees = new arraylist<>();
    for (dept menutree : menutrees) {
    	//查找根节点
        if (menutree.getpcode() == null) {
         trees.add(findchildren(menutree,menutrees));
         }
    }
    return trees;
}
/**
 * 递归查找子节点
 * @param menutree  菜单数对象
 * @param menutrees  子节点
 * @return menutree
 */
private static dept findchildren(dept menutree,list<dept> menutrees){
    for (dept it : menutrees) {
        if(menutree.getcode().equals(it.getpcode())) {
            if (menutree.getchildren() == null) {
             menutree.setchildren(new arraylist<>());
            }
            menutree.getchildren().add(findchildren(it,menutrees));
        }
    }
    return menutree;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com