目录

1、使用场景

2、代码实现

3、成果展现

4、总结

5、参考文章


1、使用场景

我们实际开发工作之中可能会遇见很多这种情况,要查询某个分页List,但是里面设计一些字典字段或者其他关联表的名称。在实际实现过程之中最简单粗暴的方法就是返回分页数据之后,循环分页结果如10条记录进行再次查询,假如分页List的记录项之中有很多类似的需要翻译名称势必会多次查询数据库。我在实际实践之中可能针对分页返回的结果,通过Stream的去重distinct处理只后,通过mysql的in查询,这样就可以通过id值和对应的翻译名称值一次返回需要处理的结果对象。然后通过把查询结果转换为Map<Long,String> ==>Map<id,name> 这样就可以在分页List之中通过对应的id值直接获得对应翻译名称值。是不是这样查询次数更少,同时也顺利实现了翻译结果。

2、代码实现

public class Dept {private Long id;private String name;public Dept(Long id, String name) {this.id = id;this.name = name;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
@Testpublic void ListBeanOrMapToMap() {List<Map> deptList = new ArrayList();Map deptMap = new HashMap();deptMap.put("id", "1");deptMap.put("name", "新希望集团");deptList.add(deptMap);deptMap = new HashMap();deptMap.put("id", 2);deptMap.put("name", "四川分公司");deptList.add(deptMap);deptMap = new HashMap();deptMap.put("id", 3);deptMap.put("name", "山东分公司");deptList.add(deptMap);//变量deptList  能后通过get 方法取出数据并给新map 赋值Map<String, Object> resultDeptMap = deptList.stream().collect(Collectors.toMap(s -> s.get("id").toString(), s -> s.get("name")));System.out.println("resultDeptMap==> " + resultDeptMap.toString());List<Dept> deptBeanList = new ArrayList<>();deptBeanList.add(new Dept(1L, "新希望集团"));deptBeanList.add(new Dept(2L, "四川分公司"));deptBeanList.add(new Dept(3L, "山东分公司"));Map resultDeptBeanMap = deptBeanList.stream().collect(Collectors.toMap(p -> p.getId(), p -> p.getName()));System.out.println("resultDeptBeanMap==> " + resultDeptBeanMap.toString());//解决重复的key问题 此处可能其他name作为keydeptMap = new HashMap();deptMap.put("id", 2);deptMap.put("name", "辽宁分公司");deptList.add(deptMap);Map<String, Object> duplicatedKeyMap = deptList.stream().collect(Collectors.toMap(s -> s.get("id").toString(), s -> s.get("name"), (oldValue, newValue) -> oldValue));System.out.println("duplicatedKeyMap: ==> " + duplicatedKeyMap.toString());}

3、成果展现

resultDeptMap==> {1=新希望集团, 2=四川分公司, 3=山东分公司}
resultDeptBeanMap==> {1=新希望集团, 2=四川分公司, 3=山东分公司}
duplicatedKeyMap: ==> {1=新希望集团, 2=四川分公司, 3=山东分公司}Process finished with exit code 0

4、总结

我们在实际开发之中可能返回的List<Map>或者List<Bean>,我们为了快速返回结果,需要对List转换为Map,然后通过Key能够很快获得对应翻译的名称值。同时有些环境下可能Key重复的问题需要处理一下。

5、参考文章


java-8-convert-list-to-map

Java8 Stream List<Bean> 或List<Map> 转Map相关推荐

  1. JAVA8 Stream方法使用详解Filter、map等用法(一)

    文章目录 一.筛选和切片 1.谓词筛选filter 2.筛选不同的元素distinct 3.截断流limit 4.跳过元素 二.映射 1.map对每个元素应用函数 2.流的扁平化 三.查找和匹配 1. ...

  2. Java8 stream().map()将对象转换为其他对象

    Java8 stream().map()将对象转换为其他对象 1: 将对象List转为List public class user{private String name;private String ...

  3. java8 stream().map().collect()用法

    java8 stream().map().collect()用法 有一个集合: List<User> users = getList(); //从数据库查询的用户集合 现在想获取User的 ...

  4. java中list、map、array、实体类、字符串之间的相互转换,以及java8 stream使用

    1.list与字符串互转 // 导入阿里的fastJson.jar <!--添加fastjson依赖--><dependency><groupId>com.alib ...

  5. java8 .stream().map().collect() 的用法

    API: https://www.runoob.com/java/java8-streams.html mylist.stream().map(myfunction->{return item; ...

  6. Java8 Stream应用:Map合并、过滤、遍历、values int求和等

    1. Java多个Map合并 // 多个Map<Long,Integer>, 根据key相同的,value累积求和: public static Map mapCombine(List&l ...

  7. java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作

    1.前言 Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合.今天我们来探讨两个 Stream 中间操作 map 和 flatMap 2. map 操作 map 操作是将流中 ...

  8. Java8 Stream接口流式方法:map操作、filter操作以及flatMap操作

    点击关注公众号,利用碎片时间学习 关于stream 流式操作,在rt.jar 包里面,ReferencePipeline管道方式操作数据 下面集成所有操作方法,利用这些流,处理大数据的方式,效率提升明 ...

  9. java8 stream 的list处理

    目录 1.List<Map>使用map中每一个字符拼接字符串 2.取出list集合对象中某一个属性,生成新的list 3.list集合的排序 ①List(Bean) ②List (Map) ...

最新文章

  1. double 导出txt保留两位_使用Jade“精修”XRD图谱并导出数据
  2. 增加数据_Photoshop XMP元数据沉积造成文件量增加
  3. 中国科学院院士梅宏:云计算这十年
  4. 【设计模式】软件设计七大原则 ( 开闭原则 )
  5. 分配和释放 BSTR 的内存
  6. 中国啮齿动物口器行业市场供需与战略研究报告
  7. yagmail发送邮件
  8. 程序员不得不了解的硬核知识大全
  9. debezium报错处理系列七:The database history couldn‘t be recovered. Consider to increase the value for datab
  10. 明源售楼系统技术解析—诚意认购(一)
  11. AndroidQ(10.0) 手机锁屏炫酷充电动画————html方案
  12. 安装驱动显卡重启计算机,Win7系统安装显卡驱动后电脑一直重启怎么办
  13. The Little Book of Semaphores 信号量小书 第六章 不那么经典的问题 6.3 狒狒穿越问题
  14. CPU到底是怎么识别代码的?
  15. resultMap标签中里的association标签
  16. solidworks flexnet server服务无法启动解决方案:
  17. SQL语句两字段拼成一个字段显示
  18. matlab伺服电机仿真,PMSM转塔伺服电机控制系统建模与Matlab仿真
  19. springCloud熔断怎么使用?
  20. wifi6与5G技术

热门文章

  1. 企业宣传片背景音乐 有哪些震撼的推荐?
  2. 2023苏研赛A题大致思路
  3. python手册 apk_python apk
  4. 微信公众号token验证失败的一些总结
  5. CESM2.2_CLM5.0 (fake)single point(伪)单点模拟√
  6. XSS练习平台【XSS Challenges】
  7. FME与空间数据库的读写
  8. typora中的emoji表情包
  9. Linux-USB鼠标驱动
  10. Python利用scrapy框架,爬取大众点评部分商铺数据~