JDK1.8

public class RegionBeanTree implements Serializable{

//保证3个参数 其他随意

private static final long serialVersionUID = 1L;

private String code;

private String pid;

private String label;

}

public class TreeToolUtils {

private List rootList; //根节点对象存放到这里

private List bodyList; //其他节点存放到这里,可以包含根节点

public TreeToolUtils(List rootList, List bodyList) {

this.rootList = rootList;

this.bodyList = bodyList;

}

public List getTree(){ //调用的方法入口

if(bodyList != null && !bodyList.isEmpty()){

//声明一个map,用来过滤已操作过的数据

Map map = Maps.newHashMapWithExpectedSize(bodyList.size());

rootList.forEach(beanTree -> getChild(beanTree,map));

return rootList;

}

return null;

}

public void getChild(RegionBeanTree beanTree,Map map){

List childList = Lists.newArrayList();

bodyList.stream()

.filter(c -> !map.containsKey(c.getCode()))

.filter(c ->c.getPid().equals(beanTree.getCode()))

.forEach(c ->{

map.put(c.getCode(),c.getPid());

getChild(c,map);

childList.add(c);

});

beanTree.setChildren(childList);

}

public static void main(String[] args){

RegionBeanTree beanTree1 = new RegionBeanTree();

beanTree1.setCode("540000");

beanTree1.setLabel("西藏省");

beanTree1.setPid("100000"); //最高节点

RegionBeanTree beanTree2 = new RegionBeanTree();

beanTree2.setCode("540100");

beanTree2.setLabel("拉萨市");

beanTree2.setPid("540000");

RegionBeanTree beanTree3 = new RegionBeanTree();

beanTree3.setCode("540300");

beanTree3.setLabel("昌都市");

beanTree3.setPid("540000");

RegionBeanTree beanTree4 = new RegionBeanTree();

beanTree4.setCode("540121");

beanTree4.setLabel("林周县");

beanTree4.setPid("540100");

RegionBeanTree beanTree5 = new RegionBeanTree();

beanTree5.setCode("540121206");

beanTree5.setLabel("阿朗乡");

beanTree5.setPid("540121");

RegionBeanTree beanTree6 = new RegionBeanTree();

List rootList = new ArrayList<>();

rootList.add(beanTree1);

List bodyList = new ArrayList<>();

bodyList.add(beanTree1);

bodyList.add(beanTree2);

bodyList.add(beanTree3);

bodyList.add(beanTree4);

bodyList.add(beanTree5);

TreeToolUtils utils = new TreeToolUtils(rootList,bodyList);

List result = utils.getTree();

result.get(0);

}

}

java将数据封装为树结构_JAVA代码实现多级树结构封装对象相关推荐

  1. java 反射创建对象并赋值_java使用反射创建并操作对象的方法

    Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...

  2. java ip加密如何访问_java代码中如何实现http访问

    作者:释怀Na 出自:CSDN 原文:blog.csdn.net/qq_35906921/article/details/98076258 java代码中如何实现http访问 大概的实现就是 请求ht ...

  3. java 中组合与复用_Java 代码复用(组合与继承)

    java中的类都是围绕着类进行的.可以通过创建新类来复用代码,而不必从头编写.可以使用别人已经开发并调试好的类.此方法使用的窍门在于使用类而不破坏现有的程序代码.达到这一目的的方法有两种: 第一种方法 ...

  4. java css网页布局实例_java代码例子

    JAVA 类名.方法名(这里面写的是什么)能不能写个代要是类名直接调用的方法,那这个方法就是静态的(static)方法,是不用new出新对象实例就可以直接调用的方法.看下面例子: class A{ p ...

  5. java如何添加自定义的图片_java代码将图片加上自定义水印 -4

    java代码将图片加上自定义水印,然后生成了新的图片 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; ...

  6. java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...

    需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...

  7. java 上传文件服务_java代码实现上传文件到文档服务器、下载文档服务器文件

    需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...

  8. java 输入五种水果_java代码,实现输入编号,输出对应水果的单价~~~~

    总结:总感觉有问题,因为输出我写的太不对劲了,直接把price的价格写了出来然输出显示-- package com.badu; import java.util.Scanner; //从键盘输入次数, ...

  9. java怎么发qq邮件_java代码如何发送QQ邮件

    近来想写一个qq之间互相发送邮件的工具.奈何一直报错服务错误: org.apache.commons.mail.EmailException: Sending the email to the fol ...

最新文章

  1. 【续】RUP模型与XP模型
  2. C++知识点记录(C++ primer)
  3. mysql索引列是锁表还是锁行_[转]关于MYSQL Innodb 锁行还是锁表
  4. 简书 php三级联动,JS 实现三级联动
  5. Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线
  6. Druid的外网访问异常
  7. Basic Calculator 基本计算器-Leetcode
  8. Java21天打卡Day5-ifelse
  9. Layui-select 下拉框实现拼音全拼匹配/首字母模糊搜索
  10. 魔兽世界 | 宏命令教程
  11. php服务器支付宝的pcm,php - 支付宝当面付报错
  12. 全国计算机二级c语言程序题库,全国计算机二级C语言操作题题库
  13. 银行流失用户分析及预测模型
  14. 使用R语言实现的城市空气质量分析模型
  15. STEM创新教育-热量与马铃薯含水量之间的关系
  16. 7款经典的MySQL客户端软件
  17. 聊聊自学,让你事半功倍的学习网站和工具
  18. 【Grasshopper基础13】创建可在画布上自由传递的自定义类型数据(上)—— IGH_Goo接口的重要性及其实现
  19. 计算机图形学 实验二 三维模型读取与控制【OpenGL】
  20. java主要用于神摸地方,超级无敌神奇的java期末考试题库

热门文章

  1. 【STM32】跑马灯实验主要程序代码分析
  2. 史上最硬核的Linux依赖问题解决方案
  3. 华为鸿蒙系统内部消息,华为鸿蒙系统内部曝光,并且将于年底发布?网友:还能再假点?...
  4. void *变量用法
  5. 译:Spring Data Repository 不区分大小写查询
  6. C#中文件和byte[]互换问题
  7. TSC的分歧导致Node.js分支
  8. 本年度最成功科技IPO企业之一:Twilio股票一月暴涨167%
  9. 英特尔将Nervana技术融入产品路线图
  10. Centos5, 6下更改系统时间和时区