在开发当中难免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使用相关推荐

  1. java multimap 序列化_C++ JSON库的使用

    1. 如何使用? 2. 常用方法 2.1 创建json对象 2.1.1 使用cin,cout输入输出流 2.1.2 提供根据键直接生成键值对的方法 2.1.3 json::array json::ob ...

  2. Commons-Collections简介

    如果你不熟悉Jakarta Commons话,那么很有可能你已经重新发明了好几个轮子.在你编写更多的普通的框架或工具之前,体验一下Commons吧.它将会大大地节约你的时间.太多的人自己写一个,其实是 ...

  3. 一篇关于apache commons类库的详解

    1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默默无闻的.在我看来,成功而默默无闻的那些框架值得我们格外的尊敬和关注,Jakarta C ...

  4. java guava map_使用googled的guava常见ImmutableMap、Multimap、Sets、Optional、Objects及Preconditions检查等用法...

    一.前言 关于google的guava-19.0.jar开源包中非空检查Preconditions.checkArgument.Objects.toStringHelper对象转换为字符串toStri ...

  5. java版本 multimap,java-multimap使用

    在开发当中难免list存在嵌套的情况,通常的实现方式是使用两个for循环嵌套,这样使得执行步骤增加,大大降低了系统的性能. 项目背景: 存在te_questionmain表和te_questionsu ...

  6. Java使用multimap数据结构

    我们希望得到键可以重复的map数据结构,这样在查询特定键时可以返回多个值,类似数据库的查询.Google Guava提供了一种优雅的数据结构Multimap可以实现一个键对应到多个值的效果. 创建: ...

  7. github javaguide_GitHub上收获Star数排名前10的Java项目

    1. CS-Notes star:92.1k 介绍:技术面试必备基础知识.Leetcode.计算机操作系统.计算机网络.系统设计.Java.Python.C++ :地址:https://cyc2018 ...

  8. Java必会的工具库,让你的代码量减少90%

    以下文章来源方志朋的博客,回复"666"获面试宝典 工作很多年后,才发现有很多工具类库,可以大大简化代码量,提升开发效率,初级开发者却不知道.而这些类库早就成为了业界标准类库,大公 ...

  9. 为什么我不建议你用阿里巴巴Java规范,而使用 Google Guava 编程?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来自 | 张丰哲 链接 | www.jianshu.com ...

  10. 为什么推荐 Java 程序员使用 Google Guava 编程

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来自 | 张丰哲 链接 | www.jianshu.com/p/97778b21bd00 前言 ...

最新文章

  1. android字符显示流程图,Android应用层View绘制流程与源码分析
  2. java stringbuffer详解_Java常用类StringBuffer详解
  3. Syntax error, parameterized types are only available if source level is 1.5
  4. 如何关闭linux系统中的覆盖输出重定向()功能
  5. Linux 命令之 du -- 显示每个文件和目录的磁盘使用空间/所占用的磁盘空间大小/所使用的磁盘空间大小/查看文件和目录的大小
  6. ubuntu下数据库的导入导出
  7. 图像分类_01图像分类简介:挑战+近邻分类器+CIFAR-10数据集概述
  8. php搜索间隔,php – 如何查找超过2个用户的匹配时间间隔
  9. c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?
  10. apex英雄机器人探路者怎么玩_Apex英雄探路者机器人实战技巧攻略[多图]
  11. 重点做EUR/USD、EUR/JPY、GBP/USD。
  12. ai皮肤检测分数_德国猫咪皮肤检测仪,为什么这么火?| 云美来
  13. 在Ubuntu Linux上安装和使用Git和GitHub:初学者指南
  14. MYSQL生成日历表,通常在做报表的时候需要用来生成一个临时表,用来左连接等。...
  15. 图书馆系统软件测试计划,图书馆管理系统软件测试计划
  16. 贩卖个人信息非法获利300余万,平安惠普、拍拍贷都是买方
  17. LibreOJ - 10015 扩散
  18. linux下删除一个环境变量,Linux 添加环境变量和删除环境变量
  19. facebook第三方登录前后端分离
  20. ORA-00054 错误原因分析

热门文章

  1. linux操作系统 第02章 linux操作做基础
  2. GPRS模块(sim900a)联网(PC)测试失败篇
  3. bootstrapCDN地址
  4. systemview简介
  5. 安全面试之WEB安全(二)
  6. 微信打开页面,提示到浏览器上打开
  7. [相机选型] 普通网络摄像头或小型摄像头和工业相机的区别
  8. OpenGL之GLEW安装
  9. ubuntu更改更新源
  10. 这 7 门 编程语言最适合新手学习