java关于map用来筛选的用法
我有一个实体 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用来筛选的用法相关推荐
- Java当中Map的认识和基本用法
一:Map Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的ley,另一组保存着Map的value,也就是Map的 键值 和关键值 .具体举例 ,和查字典类似,通过ke ...
- java中map排序(SortedMap的用法)
package JavaSenior; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; ...
- java containskey_Java Map containsKey()用法及代码示例
java.util.Map.containsKey()方法用于检查特定键是否已映射到Map中.它使用key元素作为参数,如果该元素在映射中映射,则返回True. 用法: boolean contain ...
- Java中Map用法详解
原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...
- java中Map的用法(HaspMap用法)
public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1 import java.util.HashMap; 2 ...
- 详解Java中Map用法
Map以按键/数值对的形式存储数据,这里要特别说明( Map.Entry,是Map的内部类,它用来描述Map中的键/值对). Map是一个接口,我们平时多用它的实现类HashMap. 用例如下: pu ...
- Java中Map集合类的用法(HashMap)
Map键值对,键(key)一般存储索引,值(value)一般存储对象. Map的特性即「键-值」(Key-Value)匹配 java.util.HashMap HashMap在内部使用哈希(Hash) ...
- JAVA中MAP的四种类型区别和常见的简单用法
package com.springtest.map; import org.junit.Test; import java.util.Collections; import java.util.Ha ...
- javamap的用法_Java Map常用的几种用法。
Java Map常用的几种用法. 通常,Map是由一组键值对组成的数据结构,每个键只能在映射中出现一次.这篇文章总结了有关如何使用Java Map及其实现的类的前9个常见问题解答.为了简单起见,我将在 ...
- Java数据结构Map遍历和排序
map结构和list结合很好用,基本的遍历和排序每次都要查一下,用的不熟练,这里汇总下map的基本遍历和排序,参考的代码如下: package com.vip;import java.util.Arr ...
最新文章
- dom vue 加载完 执行_前端面试题——Vue
- RandomUnderSampler 中的fit_resample 是 imblearn.base.py中调用output = self._fit_resample(X, y)
- linux进程--自旋锁和互斥锁的区别(十四)
- Spring IoC 源码导读
- view技术简单了解
- html盒子全部蓝色,彻底弄懂CSS盒子模式之五
- 面向对象方法的优势简化软件开发的过程_软件开发技巧的途径
- Vue的v-if与v-show的区别
- System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部
- 修改使用phpstorm创建的模板的默认注释
- Error parsing YAML config file: yaml-cpp: error at line
- 《Redis开发与运维》学习第六章
- AD学习之旅(1)— Altium Designer 16 软件下载与安装
- 当你爸妈吐槽你的微信头像时,你该如何反击?
- brew search怎么看版本_brew 查看已安装软件
- 计算机音乐名词解释,音乐常见名词解释
- 制作论坛发帖页面(操作节点的方式)(JavaScript)
- Spring Boot 2.2.x Junit4 升级为Junit5 后的变化、对比 找不到 org.junit.jupiter.api.Test
- thinkpadE430c加装固态硬盘小记
- 隐马尔科夫模型——学习算法
热门文章
- 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
- 智能优化算法:缎蓝园丁鸟优化算法-附代码
- EXCEL同一个界面下打开两个表格比较
- 遥感数据共享(一)珠海一号数据
- 编译ok6410linux内核,OK6410新手学习心得(一)Linux中加入led驱动及测试程序详解...
- 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?
- exclips为什么j创建局java出错_clips.BuildRule出错
- 如约而至!第二期 Flink 极客训练营上线啦
- Android TV开发总结【RecycleView】
- 鱼哥,我怕蛇,可以搞Python么?