Java8 Stream List<Bean> 或List<Map> 转Map
目录
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相关推荐
- JAVA8 Stream方法使用详解Filter、map等用法(一)
文章目录 一.筛选和切片 1.谓词筛选filter 2.筛选不同的元素distinct 3.截断流limit 4.跳过元素 二.映射 1.map对每个元素应用函数 2.流的扁平化 三.查找和匹配 1. ...
- Java8 stream().map()将对象转换为其他对象
Java8 stream().map()将对象转换为其他对象 1: 将对象List转为List public class user{private String name;private String ...
- java8 stream().map().collect()用法
java8 stream().map().collect()用法 有一个集合: List<User> users = getList(); //从数据库查询的用户集合 现在想获取User的 ...
- java中list、map、array、实体类、字符串之间的相互转换,以及java8 stream使用
1.list与字符串互转 // 导入阿里的fastJson.jar <!--添加fastjson依赖--><dependency><groupId>com.alib ...
- java8 .stream().map().collect() 的用法
API: https://www.runoob.com/java/java8-streams.html mylist.stream().map(myfunction->{return item; ...
- Java8 Stream应用:Map合并、过滤、遍历、values int求和等
1. Java多个Map合并 // 多个Map<Long,Integer>, 根据key相同的,value累积求和: public static Map mapCombine(List&l ...
- java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作
1.前言 Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合.今天我们来探讨两个 Stream 中间操作 map 和 flatMap 2. map 操作 map 操作是将流中 ...
- Java8 Stream接口流式方法:map操作、filter操作以及flatMap操作
点击关注公众号,利用碎片时间学习 关于stream 流式操作,在rt.jar 包里面,ReferencePipeline管道方式操作数据 下面集成所有操作方法,利用这些流,处理大数据的方式,效率提升明 ...
- java8 stream 的list处理
目录 1.List<Map>使用map中每一个字符拼接字符串 2.取出list集合对象中某一个属性,生成新的list 3.list集合的排序 ①List(Bean) ②List (Map) ...
最新文章
- double 导出txt保留两位_使用Jade“精修”XRD图谱并导出数据
- 增加数据_Photoshop XMP元数据沉积造成文件量增加
- 中国科学院院士梅宏:云计算这十年
- 【设计模式】软件设计七大原则 ( 开闭原则 )
- 分配和释放 BSTR 的内存
- 中国啮齿动物口器行业市场供需与战略研究报告
- yagmail发送邮件
- 程序员不得不了解的硬核知识大全
- debezium报错处理系列七:The database history couldn‘t be recovered. Consider to increase the value for datab
- 明源售楼系统技术解析—诚意认购(一)
- AndroidQ(10.0) 手机锁屏炫酷充电动画————html方案
- 安装驱动显卡重启计算机,Win7系统安装显卡驱动后电脑一直重启怎么办
- The Little Book of Semaphores 信号量小书 第六章 不那么经典的问题 6.3 狒狒穿越问题
- CPU到底是怎么识别代码的?
- resultMap标签中里的association标签
- solidworks flexnet server服务无法启动解决方案:
- SQL语句两字段拼成一个字段显示
- matlab伺服电机仿真,PMSM转塔伺服电机控制系统建模与Matlab仿真
- springCloud熔断怎么使用?
- wifi6与5G技术