CN110333846B - 一种快速缕清和组装数据父子上下关系列表的方法 - Google Patents
一种快速缕清和组装数据父子上下关系列表的方法 Download PDFInfo
- Publication number
- CN110333846B CN110333846B CN201910528423.3A CN201910528423A CN110333846B CN 110333846 B CN110333846 B CN 110333846B CN 201910528423 A CN201910528423 A CN 201910528423A CN 110333846 B CN110333846 B CN 110333846B
- Authority
- CN
- China
- Prior art keywords
- list
- attribute
- data
- parent
- child
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及软件开发中快速缕清和组装数据父子上下关系列表的方法。本发明的方法是准备需要装配的数据列表L;创建一个以对象的parentId属性为key,List<对象>为value的辅助Map,并命名childrenMap;用于存储父节点与子节点的关系;创建一个以对象的Id属性为key,此对象为value的辅助Map,并命名selfMap;用于存储对象的Id与对象自己的对应关系;然后,循环遍历步骤一的数据列表L,遍历所得当前对象命名为object,并为object设置步骤一数据列表L的children属性和parent属性。本发明有效克服了现有软件开发中数据父子上下关系的缕清和组装;可以用于软件开发的数据关系处理。
Description
技术领域
本发明涉及软件开发技术领域,具体涉及一种快速缕清和组装数据父子上下关系列表的方法。
背景技术
在软件开发领域,经常碰到父子上下关系的列表需要进行缕清和关联相互间的联系,比如:商城里的类别关系菜单、评论里的相互留言等等。每个菜单(评论)都涉及到是否有上一级(父级)菜单(评论)或者下一级(子级)菜单。现有的解决方案中,有些需要多次访问数据库来缕清关联关系,有些一次访问数据库但需要进行多次循环遍历来缕清关联关系。不管是哪种现有方案,都极大地耗费了资源和时间。
发明内容
本发明解决的技术问题是提供一种快速缕清和组装数据父子上下关系列表的方法;可以极大降低耗费的资源和时间。
本发明解决前述技术问题的技术方案是:由以下步骤实现所述方法:
步骤一、准备需要装配的数据列表L;
步骤二、创建一个以对象的parentId属性为key,List<对象>为value的辅助Map,并命名childrenMap;用于存储父节点与子节点的关系;
步骤三、创建一个以对象的Id属性为key,此对象为value的辅助Map,并命名selfMap;用于存储对象的Id与对象自己的对应关系;
步骤四、循环遍历步骤一的数据列表L,遍历所得当前对象命名为object,并为object设置步骤一数据列表L的children属性;
步骤五、为步骤四的object设置步骤一数据列表L的parent属性。
更进一步的,所述的数据列表L来源包括:从数据库查询或者从程序中传递;数据列表L中的每条数据都包括:parentId属性,用于保存父节点的Id;children属性,用于保存子节点数据列表;parent属性,用于保存父节点数据。
更为具体的,所述的步骤四包括如下步骤:
S41,得到遍历所得object的parentId,parentId为空时默认为0,不为空时为其本身;
S42,将步骤四的object对象保存到selfMap;
S43,取得步骤四的object所有兄弟列表SL,并判断列表SL,当SL等于null时,创建一个空列表并且赋值给SL;
S44,将步骤四的object保存到S43的列表SL里;
S45,把S43的列表SL保存到辅助childrenMap里;
S46,取得步骤四object的孩子列表currentCL,并判断列表currentCL,当currentCL等于null时,创建一个空列表并且赋值给currentCL;
S47,设置步骤四object的数据列表L的children属性;
S48,保存S46列表currentCL到步骤二的childrenMap。
所述的步骤五更为具体的包括如下步骤:
S51、循环遍历步骤一的数据列表L,所得当前对象命名为currentObject,并取得currentObject的parentId;
S52、从步骤三的selfMap中获取S51currentObject的父级对象parentObject;
S53、将S52 parentObject保存到S51 currentObject中的数据列表L的parent属性里。
所述的Map为基于STL的一个关联容器。
本发明的方法是利用数据列表中数据的parentId属性、children属性和parent属性,通过Map建立父节点与子节点的关系、对象的Id与对象自己的对应关系,然后,为对象设置children属性和parent属性;从而缕清和组装数据(对象)的父子关系。本发明方法在实现过程中无需多次访问数据库,也不需要进行多次循环遍历来缕清关联关系。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明方法步骤流程图;
图2是步骤四的分解步骤流程图;
图3是步骤五的分解步骤流程图。
具体实施方式
见图1所示,是本发明快速缕清和组装数据父子上下关系列表方法的流程图;本发明的实现流程如下:
步骤一、准备需要装配的数据列表L。数据列表来源:从数据库查询或者从程序中传递。列表中的每条数据(或者说对象)都必须包括:parentId(父Id)属性,该字段用于保存父节点的Id;children(子)属性,此字段用于保存子节点数据列表;parent属性,此字段用于保存父节点数据。例如:菜单列表List<Menu>,一个Menu对象就是一条数据,且Menu对象里面有一个parentId属性、children属性、parent(父)属性。
步骤二、创建一个以对象的parentId属性为key(键),List<对象>为value(值)的辅助Map(基于STL的一个关联容器),并命名childrenMap。所述childrenMap用于存储父节点与子节点的关系。
步骤三、创建一个以对象的id属性为key(键),此对象为value(值)的辅助Map,并命名selfMap。所述selfMap用于存储对象的id与对象自己的对应关系。
步骤四、循环遍历步骤一所述数据列表L,遍历所得当前对象命名为object,并为object设置步骤一所述的children属性。如图2所示,具体步骤如下:Step41,得到遍历所得对象object的parentId。parentId为空时默认为0,不为空时为其本身。Step42,将步骤四首句所述object对象保存到selfMap。具体保存如:selfMap.put(object.getId,object)。Step43,取得步骤四首句所述object所有兄弟列表SL,并判断列表SL,当SL等于null时,创建一个空列表并且赋值给SL。具体如:SL=childrenMap.get(parentId);if(SL==null)SL=new ArrayList;。Step44,将步骤四首句所述对象object保存到Step43所述列表SL里。具体如:SL.add(object);。Step45,把Step43所述列表SL保存到辅助childrenMap里。具体如:childrenMap.put(parentId,SL);。Step46,取得步骤四首句所述object的孩子列表currentCL,并判断列表currentCL,当currentCL等于null时,创建一个空列表并且赋值给currentCL。具体如:currentCL=childrenMap.get(id);if(currentCL==null)currentCL=new ArrayList。Step47,设置步骤四首句所述对象object的步骤一所述的children属性。具体如:object.setChildren(currentCL);。Step48,保存Step46所述列表currentCL到步骤二所述childrenMap。具体如:childrenMap.put(id,currentCL);。
步骤五、为步骤四首句所述的object设置步骤一所述的parent属性。具体步骤如下:Step51、循环遍历步骤一所述数据列表L,所得当前对象命名为currentObject,并取得currentObject的parentId。Step52、从步骤三所述的selfMap中获取Step51所述的currentObject的父级对象parentObject。具体如:parentObject=parentId==null?null:selfMap.get(parentId);。Step53、将Step52所述parentObject保存到Step51所述currentObject中的步骤一所述的parent属性里。具体如:currentObject.setParent(parentObject);。
Claims (1)
1.一种快速缕清和组装数据父子上下关系列表的方法,其特征在于:所述的方法包括以下步骤:
步骤一、准备需要装配的数据列表L;
所述的数据列表L来源包括:从数据库查询或者从程序中传递;数据列表L中的每条数据都包括:parentId属性,用于保存父节点的Id;children属性,用于保存子节点数据列表;parent属性,用于保存父节点数据;
步骤二、创建一个以对象的parentId属性为key,List<对象>为value的辅助Map,并命名childrenMap;用于存储父节点与子节点的关系;
步骤三、创建一个以对象的Id属性为key,此对象为value的辅助Map,并命名selfMap;用于存储对象的Id与对象自己的对应关系;
步骤四、循环遍历步骤一的数据列表L,遍历所得当前对象命名为object,并为object设置步骤一数据列表L的children属性;
所述步骤四具体包括如下步骤:
S41,得到遍历所得object的parentId,parentId为空时默认为0,不为空时为其本身;
S42,将步骤四的object对象保存到selfMap;
S43,取得步骤四的object所有兄弟列表SL,并判断列表SL,当SL等于null时,创建一个空列表并且赋值给SL;
S44,将步骤四的object保存到S43的列表SL里;
S45,把S43的列表SL保存到辅助childrenMap里;
S46,取得步骤四object的孩子列表currentCL,并判断列表currentCL,当currentCL等于null时,创建一个空列表并且赋值给currentCL;
S47,设置步骤四object的数据列表L的children属性;
S48,保存S46列表currentCL到步骤二的childrenMap;
步骤五、为步骤四的object设置步骤一数据列表L的parent属性;
所述的步骤五具体包括如下步骤:
S51、循环遍历步骤一的数据列表L,所得当前对象命名为currentObject,并取得currentObject的parentId;
S52、从步骤三的selfMap中获取S51currentObject的父级对象parentObject;
S53、将S52parentObject保存到S51currentObject中的数据列表L的parent属性里。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910528423.3A CN110333846B (zh) | 2019-06-18 | 2019-06-18 | 一种快速缕清和组装数据父子上下关系列表的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910528423.3A CN110333846B (zh) | 2019-06-18 | 2019-06-18 | 一种快速缕清和组装数据父子上下关系列表的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110333846A CN110333846A (zh) | 2019-10-15 |
CN110333846B true CN110333846B (zh) | 2022-12-06 |
Family
ID=68140997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910528423.3A Active CN110333846B (zh) | 2019-06-18 | 2019-06-18 | 一种快速缕清和组装数据父子上下关系列表的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110333846B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436453A (zh) * | 2010-09-29 | 2012-05-02 | 金蝶软件(中国)有限公司 | 一种父子维的处理方法及装置 |
CN103186568A (zh) * | 2011-12-28 | 2013-07-03 | 金蝶软件(中国)有限公司 | 树型结构数据的访问方法及系统 |
CN104598517A (zh) * | 2014-12-09 | 2015-05-06 | 北京网梯科技发展有限公司 | 基于普通数据库的树型结构表的存储与查询技术 |
CN106407303A (zh) * | 2016-08-30 | 2017-02-15 | 北京深思数盾科技股份有限公司 | 数据存储、查询方法及装置 |
CN109308284A (zh) * | 2018-09-28 | 2019-02-05 | 中国平安财产保险股份有限公司 | 报表菜单生成方法、装置、计算机设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785674B2 (en) * | 2003-01-17 | 2004-08-31 | Intelitrac, Inc. | System and method for structuring data in a computer system |
JP4537391B2 (ja) * | 2004-03-16 | 2010-09-01 | 株式会社ターボデータラボラトリー | ツリー型データ構造を取り扱う方法、情報処理装置、及び、プログラム |
US10108917B2 (en) * | 2013-09-11 | 2018-10-23 | Oracle International Corporation | Metadata-driven audit reporting system |
-
2019
- 2019-06-18 CN CN201910528423.3A patent/CN110333846B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436453A (zh) * | 2010-09-29 | 2012-05-02 | 金蝶软件(中国)有限公司 | 一种父子维的处理方法及装置 |
CN103186568A (zh) * | 2011-12-28 | 2013-07-03 | 金蝶软件(中国)有限公司 | 树型结构数据的访问方法及系统 |
CN104598517A (zh) * | 2014-12-09 | 2015-05-06 | 北京网梯科技发展有限公司 | 基于普通数据库的树型结构表的存储与查询技术 |
CN106407303A (zh) * | 2016-08-30 | 2017-02-15 | 北京深思数盾科技股份有限公司 | 数据存储、查询方法及装置 |
CN109308284A (zh) * | 2018-09-28 | 2019-02-05 | 中国平安财产保险股份有限公司 | 报表菜单生成方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
面向孵化器行业的云计算与大数据服务平台;商秀芹,李梦瑶,熊刚,孙傲冰,关班记,季统凯;《软件》;20170615;第38卷(第6期);1-6 * |
Also Published As
Publication number | Publication date |
---|---|
CN110333846A (zh) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874388B (zh) | 一种基于关系型数据库的异构系统数据级联操作自动构建方法 | |
CN106598591B (zh) | 一种网页动态菜单生成方法及装置 | |
CN104035754A (zh) | 一种基于xml的自定义代码生成方法及生成器 | |
CN110727687B (zh) | 一种物料清单转换方法及其系统 | |
CN107870949B (zh) | 数据分析作业依赖关系生成方法和系统 | |
US10776313B2 (en) | Converting source objects to target objects | |
CN115982416A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
CN116010414A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN117034582A (zh) | 数字孪生建模方法、装置、计算机设备、存储介质 | |
CN111625273A (zh) | 半导体设备的配置文件修改方法及装置 | |
CN108959391B (zh) | 展现数据库集群架构图的设备、系统、方法、存储介质 | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN110333846B (zh) | 一种快速缕清和组装数据父子上下关系列表的方法 | |
CN112699282A (zh) | 工业互联网数据处理方法、装置、电子设备及存储介质 | |
CN111401023B (zh) | 一种报表生成方法、装置、服务器及存储介质 | |
CN109583726B (zh) | 检测工艺状态的方法及系统 | |
CN116521921B (zh) | 一种三维可视化场景下数据模型的配置及查询方法 | |
CN115964054A (zh) | 应用服务部署方法和装置 | |
CN110806973A (zh) | 一种接口报文的自动生成方法及装置 | |
CN113722337B (zh) | 业务数据确定方法、装置、设备及存储介质 | |
CN111399830B (zh) | 一种应用程序容量监控方法、装置、电子设备及存储介质 | |
CN113676437B (zh) | 参数获取方法、参数设置方法以及装置 | |
CN114416836A (zh) | 一种多源异构cim数据库融合访问系统及方法 | |
CN107844639B (zh) | 一种项目标准结构自动生成方法及系统 | |
CN109905475B (zh) | 一种基于sql以规定格式输出云计算监控数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |