使用stream将list转成map
来源:互联网 发布:淘宝哪家的卫衣好 编辑:程序博客网 时间:2024/06/13 23:29
jdk1.8 lambda表达式一行便可以将list转成map
其中包括不同的value,以及不同的key及科研重复时解决方案
import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import org.junit.Test;/** * Created by Jackielee on 2017 * @author: lizhilong * @date: 2017-11-24 10:13:57 * @Copyright: 2017 www.aliyun.com Inc. All rights reserved. */public class DemoListToMap { List<Student> list = Arrays.asList(new Student(1, 18, "阿龙", GenderColumn.BOY.getCode()), new Student(2, 17, "小花", GenderColumn.GIRL.getCode()), new Student(3, 17, "阿浪", GenderColumn.LADYBOY.getCode())); @Test public void listToMapByObjectValue(){ // value 为对象 student -> student jdk1.8返回当前对象 Map<Integer, Student> map = list.stream().collect(Collectors.toMap(Student::getId, student -> student)); // 遍历打印结果 map.forEach((key, value) -> { System.out.println("key: " + key + " value: " + value); }); } @Test public void listToMapByNameValue(){ // value 为对象中的属性 Map<Integer, String> map = list.stream().collect(Collectors.toMap(Student::getId, Student::getName)); map.forEach((key, value) -> { System.out.println("key: " + key + " value: " + value); }); }}
value为对象执行结果:
key: 1 value: Student [id=1, age=18, name=阿龙, gender=0]key: 2 value: Student [id=2, age=17, name=小花, gender=1]key: 3 value: Student [id=3, age=17, name=阿浪, gender=2]
value为字段执行结果:
key: 1 value: 阿龙key: 2 value: 小花key: 3 value: 阿浪要注意的是map的key必须唯一,所以有可能出现不唯一的时候,就会报错
@Test public void listToMapByAgeKey(){ // value 为对象中的属性 Map<Integer, String> map = list.stream().collect(Collectors.toMap(Student::getAge, Student::getName)); }
执行结果:
java.lang.IllegalStateException: Duplicate key 小花因为age有相同就会报错
此时stream包下Collectors.toMap方法有一个重载方法的参数,这个参数可以传一个合并的函数解决冲突
@Test public void listToMapByAgeKey(){ // value 为对象中的属性 Map<Integer, String> map = list.stream().collect( Collectors.toMap(Student::getAge, Student::getName, (key1, key2) -> key1) ); map.forEach((key, value) -> { System.out.println("key: " + key + " value: " + value); }); }
执行结果:
key: 17 value: 小花key: 18 value: 阿龙
纯手工操作,欢迎批评指正
阅读全文
0 0
- 使用stream将list转成map
- 使用第三方工具,将JavaBean对象/List或Set或Map对象转成JSON
- 关于将map,list类型转成json字符串
- java将json字符串转成List/Map实例
- map转成list
- 使用第三方工具,将JavaBean对象或者List<JavaBean/String/Integer>或Set或Map对象转成JSON
- 使用扩展方法将datatable化成list,list转成datatable
- json字符串转成 Map/List
- json字符串转成 Map/List
- json字符串转成 Map/List
- 使用jackson将JSON字符串转成List集合
- 将 byte[] 转成Stream与将完整物理路径转成Stream
- jackson 将字符串转成list
- .net将枚举转成List
- 将JavaBean对象/List或Set或Map对象转成JSON
- java Excel导入、自适应版本、将Excel转成List<map>对象
- 根据指定的实体类中的列名,将List转成Map
- java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来
- 【前端 开发学习视频】
- 微波通道穿刺模型研究(一)
- oracle 修改密码
- 【C#】从文本获取实体对象
- Struts2的Action的生命周期:struts2为每一个请求重新初始化一个action的实例。
- 使用stream将list转成map
- openssl 1.1.1 windows环境下编译
- 手把手教你入门Python爬虫
- pcap文件格式
- Ajaxfileupload 在IE9下用按钮触发file上传控件,请求无法触发的问题
- css样式大全(整理版)
- ARToolkit手札之显示菜单(一)
- 前端框架
- 输入1234,打印1,2,34