java8新特性

Wesley13
• 阅读 316

Stream将List转换为Map,使用Collectors.toMap方法进行转换

背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象

1、指定key-value,value是对象中的某个属性值

 Map<Integer,String> userMap1 = userList.stream().collect(Collectors.toMap(User::getId,User::getName));

2、指定key-value,value是对象本身,User->User 是一个返回本身的lambda表达式

Map<Integer,User> userMap2 = userList.stream().collect(Collectors.toMap(User::getId,User->User));

3、指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身

 Map<Integer,User> userMap3 = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));

4、指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身,key 冲突的解决办法,这里选择第二个key覆盖第一个key

 Map<Integer,User> userMap4 = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(),(key1,key2)->key2));

实际项目中的例子:

// 获取机构信息List<InstInfo> instInfoList = instInfoAtom.getInstInfo(instInfo);Map<String, InstInfo> instInfoMap = instInfoList.stream().collect(Collectors.toMap(InstInfo::getInstId, Function.identity()));

InstInfo
点赞
收藏
评论区
推荐文章
光头强的博客 光头强的博客
2个月前
Java面向对象试题
1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。 创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现 接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿 吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
执键写春秋 执键写春秋
1年前
Java集合之综合论述
1.Java集合 1.1 集合应用场景1. 无法预测存储数据的数量的情况下,2. 同时存储一对一关系的数据3. 需要进行数据的增删4. 数据重复问题 1.2 集合框架的体系结构 集合框架分为两类,一是Collection,用于存储类的对象。二是Map,以键值对的形式存储信息。 Collection主要有三个子接口,List(序列),Queue(队列
干货满满张哈希 干货满满张哈希
11个月前
Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现
快速上手 Record 类我们先举一个简单例子,声明一个用户 Record。public record User(long id, String name, int age) 这样编写代码之后,Record 类默认包含的元素和方法实现包括:1. record 头指定的组成元素(int id, String name, int age),并且,这些元素都是 f
Stella981 Stella981
1年前
List的Select 和Select().tolist()
List<Person> delp = new List<Person> { new Person{ Id=1,Name="小明1",Age=11,Sign=0 }, new Person{ Id=2,Name="小明2",Age=12 ,
Wesley13 Wesley13
1年前
javabean转jsonObject
工程场景:需要将一个javaBean转换成jsonObject对象。 假设 User user = new User(); 有三个属性,name、age、sex,我们对其设值 user.setName("张三"); user.setAget("32"); user.setSex(null); 现需要转换,我采用的方法是: JS
Wesley13 Wesley13
1年前
System、Runtime、Date、Calendar、Math
System 类中的方法和属性都是静态的。 out:标准输出,默认是控制台 in: 标准输入,默认是键盘 获取系统属性信息:Properties getProperties(); 因为Properties是Hashtable的,也就是Map集合的子类对象,那么可以通过map的方法取出集合中的元素,该集合中存储都是字符串,没有泛型定义。 setPr
Wesley13 Wesley13
1年前
java 数据结构(十二):Collections工具类的使用
Collections工具类 1.作用:操作Collection和Map的工具类 2.常用方法: reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素升序排序 sort(List,Comparator)
Wesley13 Wesley13
1年前
Java8的自定义收集器与并行
Lambda表达式是Java8最重要的新特性,基础的内容这里就不说了,让我们从收集器开始。 什么是收集器 ====== 就是用于收集流运算后结果的角色。例如: List<String> collect = list.stream().map(TestBean::getName).collect(Collectors.toList()); 以上
Wesley13 Wesley13
1年前
Java中的Map集合
Map接口简介 ------- Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value, Map中的键必须是唯一的,不能重复,如果存储了相同的键,后存储的值会覆盖原有的值,简而言之就是键相同,值覆盖。 **Map常用
Wesley13 Wesley13
1年前
Java集合及concurrent并发包总结(转)
<div id="cnblogs\_post\_body" class="blogpost-body"><p><strong>1.集合包</strong></p> <p>&nbsp; &nbsp; 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对。</p> <p
Easter79 Easter79
1年前
Spring两种依赖注入方式的比较
我们知道,Spring对象属性的注入方式有两种:设值注入和构造注入。先看代码:   假设有个类为People,该对象包含三个属性,name和school还有age,这些属性都有各自的setter和getter方法,还有一个包含这三个属性的构造方法。如果用spring来管理这个对象,那么有以下两种方式为People设置属性:   1.设值注入: