将有父子关系的多个map写到一起。将子孙放到父级节点中,每个节点都会关联起来(使用list和map)
此方法效率较低,推荐查看博客
研究将有pid和id的List<Map<String,Map>>组成树
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* 〈一句话功能简述〉
* 〈功能详细描述〉
*
* @author 龙谷情
* @date 2020/4/22-17:29
* @since [v1.0]
*/
public class MaplistMap { public List<Object> getResult() {
List<Map> queryList = getQueryList();
List<Object> resultList = new ArrayList<>();
//为每一个节点添加孩子字段
for(Map map : queryList){
List<Map> childList = new ArrayList<>();
map.put("child",childList);
}
for(Map map : queryList){
for(Map childMap : queryList){
if(childMap.get("fid").toString().equals(map.get("id").toString())){
List<Map> arrList = (ArrayList<Map>) map.get("child");
arrList.add(childMap);
System.out.println("");
}
}
resultList.add(map);
} return resultList;
} /**
* 获得模拟的含有父子关系的数据
*
*/
public List<Map> getQueryList() {
Map<String, String> queryMap1 = getQueryMap("1", "name1", "");
Map<String, String> queryMap2 = getQueryMap("2", "name2", "1");
Map<String, String> queryMap3 = getQueryMap("3", "name3", "1");
Map<String, String> queryMap4 = getQueryMap("4", "name4", "2");
Map<String, String> queryMap5 = getQueryMap("5", "name5", "3");
Map<String, String> queryMap6 = getQueryMap("6", "name6", "2");
Map<String, String> queryMap7 = getQueryMap("7", "name7", "5");
Map<String, String> queryMap8 = getQueryMap("8", "name8", "4");
Map<String, String> queryMap9 = getQueryMap("9", "name9", "7");
Map<String, String> queryMap10 = getQueryMap("10", "name10", "7");
Map<String, String> queryMap11 = getQueryMap("11", "name11", "7");
Map<String, String> queryMap12 = getQueryMap("12", "name12", "8"); List<Map> queryList = new ArrayList<>();
queryList.add(queryMap1);
queryList.add(queryMap2);
queryList.add(queryMap3);
queryList.add(queryMap4);
queryList.add(queryMap5);
queryList.add(queryMap6);
queryList.add(queryMap7);
queryList.add(queryMap8);
queryList.add(queryMap9);
queryList.add(queryMap10);
queryList.add(queryMap11);
queryList.add(queryMap12);
return queryList;
} /**
* 数据模拟
*
*/
private Map<String, String> getQueryMap(String id, String name, String fid) {
Map<String, String> queryMap = new HashMap<>();
queryMap.put("id", id);
queryMap.put("name", name);
queryMap.put("fid", fid);
return queryMap;
}
}
将有父子关系的多个map写到一起。将子孙放到父级节点中,每个节点都会关联起来(使用list和map)的更多相关文章
- 7.QT-Qt对象间的父子关系
Qt对象之间可以存在父子关系 继承于QObject类或者其子类的对象,都称为Qt对象 当指定Qt对象的父对象时 需要通过setParent()成员函数来设置对象间的父子关系 子对象将会把自己的指针地址 ...
- maven创建父子关系的聚合项目
我最近使用eclipse的mavean插件创建父子关系的聚合项目,如果创建子工程直接在父工程我相信大家都会创建,但是子工程在父工程中的其中一个文件夹里面,我们创建子工程是直接存在父工程下面的,当我们想 ...
- [转]NHibernate之旅(9):探索父子关系(一对多关系)
本节内容 引入 NHibernate中的集合类型 建立父子关系 父子关联映射 结语 引入 通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHiberna ...
- elasticsearch 父子关系
ElasticSearch 中的Parent-Child关系和nested模型是相似的, 两个都可以用于复杂的数据结构中,区别是 nested 类型的文档是把所有的实体聚合到一个文档中而Parent- ...
- Logstash 父子关系 配置
最近在使用Lostash的过程中遇到了一个问题:在一个log文件里包含两类数据,而且两类数据之间存在父子关系,那如何使用lostash的configuration实现这个需求呢 思路: 首先定义父事件 ...
- margin collapse 之父子关系的DIV
打算花点时间将知识整理一下,虽然平时现用现查都能完成工作,可是当遇到面试这种事情的时候,临时查就来不及了... 关于margin,整理若干知识点如下: 一:父子关系的DIV标签以及未加margin时的 ...
- iOS 父子关系
1.面向对象特征,类的继承 成员变量(实例变量) 子类继承父类所有功能,只能直接(访问)调用父类中的.h中的protect和public成员变量(实例变量)及方法, .h中的私有的成员变量,子类不能直 ...
- Qt 对象间的父子关系
C++中只要有一个new就必须要有一个delete与之对应 但是Qt中的对象之间有特殊的关系 Qt 对象间的父子关系 每一个对象都保存有它所有子对象的指针 每一个对象都有一个指向其父对象的指针 par ...
- MFC窗口的父子关系和层级关系
一直对窗口之间的关系有些混乱,遇到需要指定父窗口的函数时常常要考虑很久,究竟父窗口是哪个窗口,遂上网查资料,略有所悟,简记如下: 对话框中的所有控件(比如Button等)都是其子窗口. ...
- oracle处理节点之间的父子关系
通常当与树的结构之间的关系处理,这是一个很复杂的事情,我们可以通过程序代码去逐层遍历父或子节点,这样做的缺点是很明显,效率不高,操作复杂性是比较大的.而当我们使用Oracle当数据库,我们可以有一个简 ...
随机推荐
- tesseract引擎RVV代码学习笔记
Tesseract 是一个开源的 OCR(Optical Character Recognition,光学字符识别)引擎,可将图像中的文本转换为机器可读的文本格式.由于组内曾经有同事为这个项目贡献 ...
- 通过 C# 获取PDF文档中的字体名、大小、颜色、样式等
在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响.然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文档.获取PDF中的字体信息可以解决这个问题,让我们能 ...
- C# LINQ 快速入门实战指南,建议收藏学习!
前言 因为咱们的.NET EF Core快速入门实战教程经常会用到 LINQ 去查询和操作 MySQL 中的数据,因此我觉得很有必要对 LINQ 的一些使用技巧.常用方法.特性做一个详细的介绍,让大家 ...
- windows下redis设置redis开机自启动
windows系统下启动redis命令 进入redis安装目录 cd redis 输入 redis-server.exe redis.windows.conf 启动redis命令,看是否成功 可能会启 ...
- Asp.net core 少走弯路系列教程(一)了解 W3C
前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...
- [开源] .Net 使用 ORM 访问 人大金仓数据库
前言 京人大金仓信息技术股份有限公司(以下简称"人大金仓")是具有自主知识产权的国产数据管理软件与服务提供商.人大金仓由中国人民大学一批最早在国内开展数据库教学.科研.开发的专家于 ...
- SpringBoot——使用http2
使用http2 许多浏览器,包括Edge,仅在TLS(即HTTPS)情况下支持HTTP/2.即使服务器端配置为无TLS支持的HTTP/2,浏览器可能仍将回退到HTTP/1.1.所以我们需要有一个证书来 ...
- SpringMVC的注解
@RequestMapping 指定请求的路径 value :用于指定请求的url.它和path属性的作用是一样的. path :路径 method :请求的方法.RequestMethod.GET, ...
- Go-Spring v1.2.0 版本简介
引言 随着微服务和云原生架构的普及,Go 语言以其高并发.低延迟和简洁语法在后端开发领域迅速崛起.然而,原生 Go 在项目结构.依赖管理.配置热更新等方面相比 Java Spring 生态尚有短板.G ...
- 【记录】Python3|Windows下Python3.11.0的pybluez安装(用于处理蓝牙模块的数据)
参考: 官方安装文档:https://github.com/pybluez/pybluez/blob/master/docs/install.rst 仓库的issue447:https://githu ...