我有一个实体 PropTemplateItem{id,名称,父节点,模版id},父节点为root是定义为根节点。

例如数据:

001,颜色,root,123

002,白色,001,123

003,红色,001,123

004,配置,root,123

005,低配,004,123

006,高配,004,123

自己定义一个model(PropTemplateItemInfo模型,有一个根节点,有多个子节点)

怎样才能把上述示例数据中存放到自定义模型里?

1.通过数据库直接查询(先查出所有根节点,在遍历所有根节点查询起所有子节点)     与数据库交互太多,特别在数据量大了时缺点更明显

2.通过数据库查询出该模版下所有节点,然后通过遍历这个列表,判断为root节点的就在这个循环里面在遍历这个列表,找到父节点id等于这个root节点id的节点,放到自己定义模型里面去。遍历次数应该是n(list.size())*n 这是最容易想到的办法,但嵌套的遍历在数据量大时消耗的性能就比较高了

3.通过数据库查询出该模版下所有节点,通过map来存放筛选结果,遍历次数就只有n(list.size())*2

代码如下

第一次遍历这个列表时,找到所有root节点,放在map中,map的key就是他的id,然后新建一个PropTemplateItemInfo对象,把他的root节点放进去。

第二次遍历这个列表时,判断map里面是否存在这个key,如果存在,就把这个对象从map中取出来,把他的子节点的值add进那个map。

我们最终要返回图中名为infoList的对象,因为图中2个循环中全在操作同一个名为tpl的对象,所以infoList中的tpl对象也会随之变化。

如有不足,请大家分享您的看法建议,互相学习,相互提高。

转载于:https://www.cnblogs.com/lijiahong/p/6305786.html

java关于map用来筛选的用法相关推荐

  1. Java当中Map的认识和基本用法

    一:Map Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的ley,另一组保存着Map的value,也就是Map的 键值 和关键值 .具体举例 ,和查字典类似,通过ke ...

  2. java中map排序(SortedMap的用法)

    package JavaSenior; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; ...

  3. java containskey_Java Map containsKey()用法及代码示例

    java.util.Map.containsKey()方法用于检查特定键是否已映射到Map中.它使用key元素作为参数,如果该元素在映射中映射,则返回True. 用法: boolean contain ...

  4. Java中Map用法详解

    原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...

  5. java中Map的用法(HaspMap用法)

    public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1 import java.util.HashMap; 2 ...

  6. 详解Java中Map用法

    Map以按键/数值对的形式存储数据,这里要特别说明( Map.Entry,是Map的内部类,它用来描述Map中的键/值对). Map是一个接口,我们平时多用它的实现类HashMap. 用例如下: pu ...

  7. Java中Map集合类的用法(HashMap)

    Map键值对,键(key)一般存储索引,值(value)一般存储对象. Map的特性即「键-值」(Key-Value)匹配 java.util.HashMap HashMap在内部使用哈希(Hash) ...

  8. JAVA中MAP的四种类型区别和常见的简单用法

    package com.springtest.map; import org.junit.Test; import java.util.Collections; import java.util.Ha ...

  9. javamap的用法_Java Map常用的几种用法。

    Java Map常用的几种用法. 通常,Map是由一组键值对组成的数据结构,每个键只能在映射中出现一次.这篇文章总结了有关如何使用Java Map及其实现的类的前9个常见问题解答.为了简单起见,我将在 ...

  10. Java数据结构Map遍历和排序

    map结构和list结合很好用,基本的遍历和排序每次都要查一下,用的不熟练,这里汇总下map的基本遍历和排序,参考的代码如下: package com.vip;import java.util.Arr ...

最新文章

  1. dom vue 加载完 执行_前端面试题——Vue
  2. RandomUnderSampler 中的fit_resample 是 imblearn.base.py中调用output = self._fit_resample(X, y)
  3. linux进程--自旋锁和互斥锁的区别(十四)
  4. Spring IoC 源码导读
  5. view技术简单了解
  6. html盒子全部蓝色,彻底弄懂CSS盒子模式之五
  7. 面向对象方法的优势简化软件开发的过程_软件开发技巧的途径
  8. Vue的v-if与v-show的区别
  9. System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部
  10. 修改使用phpstorm创建的模板的默认注释
  11. Error parsing YAML config file: yaml-cpp: error at line
  12. 《Redis开发与运维》学习第六章
  13. AD学习之旅(1)— Altium Designer 16 软件下载与安装
  14. 当你爸妈吐槽你的微信头像时,你该如何反击?
  15. brew search怎么看版本_brew 查看已安装软件
  16. 计算机音乐名词解释,音乐常见名词解释
  17. 制作论坛发帖页面(操作节点的方式)(JavaScript)
  18. Spring Boot 2.2.x Junit4 升级为Junit5 后的变化、对比 找不到 org.junit.jupiter.api.Test
  19. thinkpadE430c加装固态硬盘小记
  20. 隐马尔科夫模型——学习算法

热门文章

  1. 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
  2. 智能优化算法:缎蓝园丁鸟优化算法-附代码
  3. EXCEL同一个界面下打开两个表格比较
  4. 遥感数据共享(一)珠海一号数据
  5. 编译ok6410linux内核,OK6410新手学习心得(一)Linux中加入led驱动及测试程序详解...
  6. 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?
  7. exclips为什么j创建局java出错_clips.BuildRule出错
  8. 如约而至!第二期 Flink 极客训练营上线啦
  9. Android TV开发总结【RecycleView】
  10. 鱼哥,我怕蛇,可以搞Python么?