java-multimap使用
在开发当中难免list存在嵌套的情况,通常的实现方式是使用两个for循环嵌套,这样使得执行步骤增加,大大降低了系统的性能。
项目背景: 存在te_questionmain表和te_questionsub表,是一对多的关系,学生段抽题从这两张表中根据papermain字段将List<Questionmain>和List<Questionsub>全部查出来,为了保证数据不重复,不适用sql的连接表查询语句;系统应用的java版本是1.7,因此不具备1.8以后的list筛选功能。实现方式只能是查出两个list集合以后,将List<Questionsub>插入到对应的List<QuestionMain>当中。
使用两层for循环的实现的方式:
List<Questionmain> questionmains2=new ArrayList<Questionmain>();
for(Questionmain questionmain:questionmains){for(Questionsub questionsub:questionsubs){List<Questionsub>questionsubs2=new ArrayList<Questionsub>();if(questionsub.getQuestionmainID.equals(questionmain.getId)){questionsubs2.put(quesionsub);}questionmain.setQuestionsubList(questionsubs2)}
}
使用mutimap的实现方式:
//将questionsub放到multimap中
Multimap<String,QuestionSub>quetionSubMutimap=ArrayListMultimap.create();
Iterator iterator =questionSubs.iterator();
while(iterator.hasNext()){QuestionSub questionSub=(QuestionSub)iterator.next();quetionSubMutimap.put(questionSub.getPaperMainId(), questionSub);
}Iterator iterator2=questionMains.iterator();
while(iterator2.hasNext()){QuestionMain questionMain=(QuestionMain)iterator2.next();List<QuestionSub>questionSubs3=new ArrayList<QuestionSub>();// 将collection中存在的questionsub实体放入到list中if(quetionSubMutimap.containsKey(questionMain.getId())){Collection<QuestionSub>questionSubs2=quetionSubMutimap.get(questionMain.getId());for (QuestionSub questionSub : questionSubs2) {questionSubs3.add(questionSub);}}questionMain.setQuestionsubList(questionSubs3);
}
从该实例中我们可以看出multimap是一个id对应多个实体,且在存放的过程中自动将实体进行归类,形成格式是Multimap<String,Collection<T>>.
详细的multimap使用方法请参照:《Guava 之 Multimap 用法简介》
java-multimap使用相关推荐
- java multimap 序列化_C++ JSON库的使用
1. 如何使用? 2. 常用方法 2.1 创建json对象 2.1.1 使用cin,cout输入输出流 2.1.2 提供根据键直接生成键值对的方法 2.1.3 json::array json::ob ...
- Commons-Collections简介
如果你不熟悉Jakarta Commons话,那么很有可能你已经重新发明了好几个轮子.在你编写更多的普通的框架或工具之前,体验一下Commons吧.它将会大大地节约你的时间.太多的人自己写一个,其实是 ...
- 一篇关于apache commons类库的详解
1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默默无闻的.在我看来,成功而默默无闻的那些框架值得我们格外的尊敬和关注,Jakarta C ...
- java guava map_使用googled的guava常见ImmutableMap、Multimap、Sets、Optional、Objects及Preconditions检查等用法...
一.前言 关于google的guava-19.0.jar开源包中非空检查Preconditions.checkArgument.Objects.toStringHelper对象转换为字符串toStri ...
- java版本 multimap,java-multimap使用
在开发当中难免list存在嵌套的情况,通常的实现方式是使用两个for循环嵌套,这样使得执行步骤增加,大大降低了系统的性能. 项目背景: 存在te_questionmain表和te_questionsu ...
- Java使用multimap数据结构
我们希望得到键可以重复的map数据结构,这样在查询特定键时可以返回多个值,类似数据库的查询.Google Guava提供了一种优雅的数据结构Multimap可以实现一个键对应到多个值的效果. 创建: ...
- github javaguide_GitHub上收获Star数排名前10的Java项目
1. CS-Notes star:92.1k 介绍:技术面试必备基础知识.Leetcode.计算机操作系统.计算机网络.系统设计.Java.Python.C++ :地址:https://cyc2018 ...
- Java必会的工具库,让你的代码量减少90%
以下文章来源方志朋的博客,回复"666"获面试宝典 工作很多年后,才发现有很多工具类库,可以大大简化代码量,提升开发效率,初级开发者却不知道.而这些类库早就成为了业界标准类库,大公 ...
- 为什么我不建议你用阿里巴巴Java规范,而使用 Google Guava 编程?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来自 | 张丰哲 链接 | www.jianshu.com ...
- 为什么推荐 Java 程序员使用 Google Guava 编程
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来自 | 张丰哲 链接 | www.jianshu.com/p/97778b21bd00 前言 ...
最新文章
- android字符显示流程图,Android应用层View绘制流程与源码分析
- java stringbuffer详解_Java常用类StringBuffer详解
- Syntax error, parameterized types are only available if source level is 1.5
- 如何关闭linux系统中的覆盖输出重定向()功能
- Linux 命令之 du -- 显示每个文件和目录的磁盘使用空间/所占用的磁盘空间大小/所使用的磁盘空间大小/查看文件和目录的大小
- ubuntu下数据库的导入导出
- 图像分类_01图像分类简介:挑战+近邻分类器+CIFAR-10数据集概述
- php搜索间隔,php – 如何查找超过2个用户的匹配时间间隔
- c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?
- apex英雄机器人探路者怎么玩_Apex英雄探路者机器人实战技巧攻略[多图]
- 重点做EUR/USD、EUR/JPY、GBP/USD。
- ai皮肤检测分数_德国猫咪皮肤检测仪,为什么这么火?| 云美来
- 在Ubuntu Linux上安装和使用Git和GitHub:初学者指南
- MYSQL生成日历表,通常在做报表的时候需要用来生成一个临时表,用来左连接等。...
- 图书馆系统软件测试计划,图书馆管理系统软件测试计划
- 贩卖个人信息非法获利300余万,平安惠普、拍拍贷都是买方
- LibreOJ - 10015 扩散
- linux下删除一个环境变量,Linux 添加环境变量和删除环境变量
- facebook第三方登录前后端分离
- ORA-00054 错误原因分析