Lambda的表达式之()
Hello!~ 小伙伴们
最近的自己博客写的可以说是很少了,也没有进行自我提升学习,总是在堕落中.在写此篇时(2023年6月10日14:54:05),我也正在加班
还有,也就是今天:我的好朋友也结婚了!~ 哈哈===>回归正题,今天我们的博客
1.()
作用
和它的名字差不多,就是将一个对象的
list
数据集合转换成map
的键值对
专业解释:
toMap(Function,Function)
: 返回一个集合Collector
,将元素累积到一个Map
中,将key
和value
提供的映射函数应用于输入元素的结果
2.实战操作
为了更深刻的掌握,我们再这用一个例子来进行说明,从而来快速掌握
2.1对象的数据准备
1.首先建一个
person
类的对象
/**
*假设一个对象,与表的数据映射
*/
public class Person(){
//id 主键
int id;
//姓名
String name;
//地址
String address;
}
2.根据这个类拿取数据构建
List
==> 模拟数据的准备
List<Person> list=new ArrayList<>();
//模拟数据
for(int i=1;i<10;i++){
(new Person(i,"测试数据"+i,"地址"+));
}
2.2toMap
使用
比如将
list
转成id
为key
的Map,value
为id
对应的’Person’对象
//toMap(key,value)
Map<Integer,Person> map=().collect((Person::getId,()));
注意:如果id
存在重复值,那么在执行上述时,会报错==> 解决办法
只取前一个key及value:
Map<String, Person> map = ()
.collect((Student::getId,(),(oldValue,newValue) -> newValue))
3.补充: groupingBy()
啥意思呢?就是比如我要根据
Person
的id
和name
组合作为key,来进行筛选出一个Map
集合,其中的value
是id
和name
的一一对应的list集合
Map<String, List<Student>> map = ().collect((dto->()+());
4.过滤去重 比如两个LIST
进行去重
直接看当中的关键代码
containsKey
: 判断是否含有相同的key
Map<String, Student> map2 = ()
.collect((Person::getId,()));
List<String> strings = ()
.map(Person::getId)
.filter(map2::containsKey)
.map(map2::get)
.map(Person::getName)
.collect(());