java将数据封装为树结构_JAVA代码实现多级树结构封装对象
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代码实现多级树结构封装对象相关推荐
- java 反射创建对象并赋值_java使用反射创建并操作对象的方法
Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...
- java ip加密如何访问_java代码中如何实现http访问
作者:释怀Na 出自:CSDN 原文:blog.csdn.net/qq_35906921/article/details/98076258 java代码中如何实现http访问 大概的实现就是 请求ht ...
- java 中组合与复用_Java 代码复用(组合与继承)
java中的类都是围绕着类进行的.可以通过创建新类来复用代码,而不必从头编写.可以使用别人已经开发并调试好的类.此方法使用的窍门在于使用类而不破坏现有的程序代码.达到这一目的的方法有两种: 第一种方法 ...
- java css网页布局实例_java代码例子
JAVA 类名.方法名(这里面写的是什么)能不能写个代要是类名直接调用的方法,那这个方法就是静态的(static)方法,是不用new出新对象实例就可以直接调用的方法.看下面例子: class A{ p ...
- java如何添加自定义的图片_java代码将图片加上自定义水印 -4
java代码将图片加上自定义水印,然后生成了新的图片 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; ...
- java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...
需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...
- java 上传文件服务_java代码实现上传文件到文档服务器、下载文档服务器文件
需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...
- java 输入五种水果_java代码,实现输入编号,输出对应水果的单价~~~~
总结:总感觉有问题,因为输出我写的太不对劲了,直接把price的价格写了出来然输出显示-- package com.badu; import java.util.Scanner; //从键盘输入次数, ...
- java怎么发qq邮件_java代码如何发送QQ邮件
近来想写一个qq之间互相发送邮件的工具.奈何一直报错服务错误: org.apache.commons.mail.EmailException: Sending the email to the fol ...
最新文章
- 【续】RUP模型与XP模型
- C++知识点记录(C++ primer)
- mysql索引列是锁表还是锁行_[转]关于MYSQL Innodb 锁行还是锁表
- 简书 php三级联动,JS 实现三级联动
- Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线
- Druid的外网访问异常
- Basic Calculator 基本计算器-Leetcode
- Java21天打卡Day5-ifelse
- Layui-select 下拉框实现拼音全拼匹配/首字母模糊搜索
- 魔兽世界 | 宏命令教程
- php服务器支付宝的pcm,php - 支付宝当面付报错
- 全国计算机二级c语言程序题库,全国计算机二级C语言操作题题库
- 银行流失用户分析及预测模型
- 使用R语言实现的城市空气质量分析模型
- STEM创新教育-热量与马铃薯含水量之间的关系
- 7款经典的MySQL客户端软件
- 聊聊自学,让你事半功倍的学习网站和工具
- 【Grasshopper基础13】创建可在画布上自由传递的自定义类型数据(上)—— IGH_Goo接口的重要性及其实现
- 计算机图形学 实验二 三维模型读取与控制【OpenGL】
- java主要用于神摸地方,超级无敌神奇的java期末考试题库
热门文章
- 【STM32】跑马灯实验主要程序代码分析
- 史上最硬核的Linux依赖问题解决方案
- 华为鸿蒙系统内部消息,华为鸿蒙系统内部曝光,并且将于年底发布?网友:还能再假点?...
- void *变量用法
- 译:Spring Data Repository 不区分大小写查询
- C#中文件和byte[]互换问题
- TSC的分歧导致Node.js分支
- 本年度最成功科技IPO企业之一:Twilio股票一月暴涨167%
- 英特尔将Nervana技术融入产品路线图
- Centos5, 6下更改系统时间和时区