网站首页 > java教程 正文
1.tomap 转换 简单数据转换【用于没有重复key值的数据集合】
/**
* 1.toMap(Function<? super T, ? extends K> keyMapper,Function<? super T, ? extends U> valueMapper) 【用于没有重复key值的数据集合】
* 1.keyMapper map中key的获取
* 2.valueMapper map中value值的获取
*/
//注释: 把student中的age当key student 中的name当 map的value ,如果存在key值相同的舍弃后一条相同的数据取第一条
Map<Integer, String> ageMap = students.stream().collect(Collectors.toMap(item -> item.getAge(), item -> item.getName()));
ageMap.forEach((k, v) -> System.out.println("k=" + k + "--- value=" + v));
/**
k=18--- value=小王
k=19--- value=小明
k=20--- value=小飞
k=21--- value=小长
*/
2.用于有重复key值的数据集合【常用】
List<Student> students1 = new ArrayList<>();
students1.add(new Student("小王", "北京", 18));
students1.add(new Student("小明", "湖北", 17));
students1.add(new Student("小飞", "深圳", 17));
students1.add(new Student("小长", "湖北", 20));
/**
* 2.toMap(Function<? super T, ? extends K> keyMapper,Function<? super T, ? extends U> valueMapper,BinaryOperator<U> mergeFunction) 【用于有重复key值的数据集合】
* 1.keyMapper map中key的获取
* 2.valueMapper map中value值的获取
* 3.mergeFunction 如果有重复数据 合并规则
* 3.0 通过BinaryOperator<U> mergeFunction 函数从k1,k2中取一个 值作为合并规则
* 3.1 (k1, k2)->k1) 如果key 相同 保留k1 和k1 value
* 3.2 (k1, k2)->k2) 如果key相同 保留k2 和k2 value
*
*/
//注释: 把student中的age当key student 中的name当 map的value ,如果存在key值相同的舍弃后一条相同的数据取第一条
Map<Integer, String> ageMap1 = students1.stream().collect(Collectors.toMap(item -> item.getAge(), item -> item.getName(), (k1, k2) -> k1));
ageMap1.forEach((k, v) -> System.out.println("k=" + k + "value=" + v));
//注释: 把student中的age当key student 中的name当 map的value ,如果存在key值相同的 就通过age比较大小 如果age大的就保留
Map<String, Student> nameMap1 = students1.stream().collect(Collectors.toMap(item -> item.getAdress(), item -> item, (k1, k2) -> {
return Student.compareTo(k1,k2);
}));
nameMap1.forEach((k, v) -> System.out.println("k=" + k + "value=" + v));
/**
* k=湖北value=Student(name=小长, adress=湖北, age=20)
k=深圳value=Student(name=小飞, adress=深圳, age=17)
k=北京value=Student(name=小王, adress=北京, age=18)
*/
3.用于有重复key值的数据集合,指定map数据类型
/**
* 3.toMap(Function<? super T, ? extends K> keyMapper,Function<? super T, ? extends U> valueMapper,BinaryOperator<U> mergeFunction,Supplier<M> mapSupplier) 【用于有重复key值的数据集合,指定map数据类型】
* 1.keyMapper map中key的获取
* 2.valueMapper map中value值的获取
* 3.mergeFunction 如果有重复数据 合并规则
* 3.0 通过BinaryOperator<U> mergeFunction 函数从k1,k2中取一个或者组成一个加工后的新值 值作为合并规则
* 3.1 (k1, k2)->k1) 如果key 相同 保留k1 和k1 value
* 3.2 (k1, k2)->k2) 如果key相同 保留k2 和k2 value
* 4.mapSupplier 指定具体收集的map类型 LinkedHashMap ConcurrentHashMap 等
*/
//注释: 把student中的age当key student 中的name当 map的value ,如果存在key值相同的 就通过age比较大小 如果age大的就保留
ConcurrentHashMap<String, Student> nameMap2 = students1.stream().collect(Collectors.toMap(item -> item.getAdress(), item -> item, (k1, k2) -> {
return Student.compareTo(k1,k2);
}, ConcurrentHashMap::new));
System.out.println("nameMap2 数据类型 为="+ (nameMap2 instanceof ConcurrentHashMap));//nameMap2 数据类型 为=true
nameMap2.forEach((k, v) -> System.out.println("k=" + k + "value=" + v));
猜你喜欢
- 2024-10-26 Java8 List转Map,我卡壳了......
- 2024-10-26 HashMap 的 7 种遍历方式与性能分析!(强烈推荐)
- 2024-10-26 Java集合-- Map(Java集合类)
- 2024-10-26 js 函数式编程:不要再使用 for 循环啦,试试 map 吧
- 2024-10-26 大厂Java二面:Spring循环依赖,烂大街的问题这么答面试官才满意
- 2024-10-26 JAVA集合之 MAP和HASHMAP(java中map和hashmap)
- 2024-10-26 双列集合Map不再难懂:轻松掌握这些知识点!
- 2024-10-26 用到停不下来,Java 8 新特性:foreach 和 stream
- 2024-10-26 Go语言开发者必知必会的Map优化技巧
- 2024-10-26 计算机程序员的入门实践-Map常用的遍历方式(七)
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)