java对象list使用stream根据某一个属性转换成map的3种方式举例
可以使用Java 8中的Stream API将List转换为Map,并根据某个属性作为键或值。以下是一些示例代码:
将List转换为Map,键为某个属性,值为对象本身
List<Person> personList = ... // 假设这是一个Person对象列表 Map<String, Person> personMap = personList.stream() .collect(Collectors.toMap(Person::getName, Function.identity()));
在这个示例中,将Person对象列表转换为Map,其中键为Person对象的name属性,值为Person对象本身。
将List转换为Map,键为对象本身,值为某个属性
List<Person> personList = ... // 假设这是一个Person对象列表 Map<Person, String> personMap = personList.stream() .collect(Collectors.toMap(Function.identity(), Person::getAddress));
在这个示例中,将Person对象列表转换为Map,其中键为Person对象本身,值为Person对象的address属性。
将List转换为Map,键为某个属性,值为另一个属性
List<Person> personList = ... // 假设这是一个Person对象列表 Map<String, String> personMap = personList.stream() .collect(Collectors.toMap(Person::getName, Person::getAddress));
在这个示例中,将Person对象列表转换为Map,其中键为Person对象的name属性,值为Person对象的address属性。
无论使用哪种方式,都可以使用Java 8的Stream API将List转换为Map,并根据某个属性作为键或值。需要注意的是,在将List转换为Map时,键必须是唯一的,否则将会抛出异常。
附:list转map特殊操作
不同实体的list之间转化,相同属性的赋值
List<ResourcesInfoCapacityExcel> resourceInfoExcels = resourcesInfoCapacities.stream().map( todo -> new ResourcesInfoCapacityExcel(todo.getModelName(), todo.getExistingCapacity(), todo.getForecastWorkload(), todo.getDifferenceWorkload(), todo.getMonth() )).collect(Collectors.toList());
非stram
相同key将值相加,不同key put进map
Map<String, Double> foreWorkLoad = new HashMap<>(); foreWorkLoad.merge(key, resourcesWorkloadCalculate1.getWorkLoad(), (a, b) -> a + b);
list转map,相同key的list相加
Map<String, List<ResourcesInfo>> resourcesInfosListMap =new HashMap<>(); for (ResourcesInfo resourcesInfo: resourcesInfos) { String key=resourcesInfo.getModel() + "," + workDateMap.get(resourcesInfo.getMonth()); List<ResourcesInfo> moduleRanks = resourcesInfos.stream() .filter(e -> resourcesInfo.getModel() == null || resourcesInfo.getModel().equals(e.getModel()) ).filter(e -> resourcesInfo.getMonth() == null || resourcesInfo.getMonth().equals(e.getMonth()) ).collect(Collectors.toList()); if (resourcesInfosListMap.get(key)==null){ resourcesInfosListMap.put(key,moduleRanks); }else { moduleRanks.addAll(resourcesInfosListMap.get(key)); resourcesInfosListMap.put(key,moduleRanks); } }
总结
到此这篇关于java对象list使用stream根据某一个属性转换成map的3种方式的文章就介绍到这了,更多相关java对象根据某属性转换map内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MyBatis处理mysql主键自动增长出现的不连续问题解决
本文主要介绍了MyBatis处理mysql主键自动增长出现的不连续问题解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-09-09eclipse中maven的pom.xml文件中增加依赖的方法
日 在Maven项目中,可以使用pom.xml文件来添加依赖包,本文主要介绍了eclipse中maven的pom.xml文件中增加依赖的方法,具有一定的参考价值,感兴趣的可以了解一下2023-12-12一文带你彻底了解Java8中的Lambda,函数式接口和Stream
这篇文章主要为大家详细介绍了解Java8中的Lambda,函数式接口和Stream的用法和原理,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下2023-08-08Spring中Transactional注解使用的心得(推荐)
这篇文章主要介绍了Spring中Transactional注解使用的心得,事务是用来控制数据的ACID特性的,用于保证数据的正确性和完整性,需要的朋友可以参考下2022-10-10
最新评论