java对象list使用stream根据某一个属性转换成map的3种方式举例

 更新时间:2024年01月23日 10:25:52   作者:jilcccccc  
开发小伙伴们通常会需要使用到对象和Map互相转换的开发场景,下面这篇文章主要给大家介绍了关于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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一篇文章带你了解如何正确使用java线程池

    一篇文章带你了解如何正确使用java线程池

    这篇文章主要介绍了如何正确使用java线程池,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • Spring实战之使用静态工厂方法创建Bean操作示例

    Spring实战之使用静态工厂方法创建Bean操作示例

    这篇文章主要介绍了Spring实战之使用静态工厂方法创建Bean操作,结合实例形式分析了静态工厂方法创建Bean的相关实现步骤与操作注意事项,需要的朋友可以参考下
    2019-11-11
  • IDEA如何设置SVN提交忽略文件 target.iml

    IDEA如何设置SVN提交忽略文件 target.iml

    使用IDEA的SVN插件时,可能会遇到提交不必要文件的问题,解决这个问题有两种方法:第一种是在IDEA设置中的File Types下的Ignore files and folders添加需要忽略的文件或文件夹;第二种是使用SVN客户端TortoiseSVN,在项目目录点击右键选择properties
    2024-10-10
  • Java中的HashMap集合深度解析

    Java中的HashMap集合深度解析

    这篇文章主要介绍了Java中的HashMap集合深度解析, HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发,需要的朋友可以参考下
    2023-09-09
  • 详解如何在Spring Security中自定义权限表达式

    详解如何在Spring Security中自定义权限表达式

    这篇文章主要和大家详细介绍一下如何在Spring Security中自定义权限表达式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-07-07
  • 深入解析Java编程中面向字节流的一些应用

    深入解析Java编程中面向字节流的一些应用

    这篇文章主要介绍了Java编程中面向字节流的一些应用,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • java中的HashMap多层嵌套

    java中的HashMap多层嵌套

    这篇文章主要介绍了java中的HashMap多层嵌套问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Spring ApplicationContext接口功能详细介绍

    Spring ApplicationContext接口功能详细介绍

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2023-02-02
  • SpringBoot项目使用 axis 调用webservice接口的实践记录

    SpringBoot项目使用 axis 调用webservice接口的实践记录

    这篇文章主要介绍了SpringBoot项目使用 axis 调用webservice接口,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Springboot基础学习之初识SpringBoot

    Springboot基础学习之初识SpringBoot

    今天带大家学习Springboot基础知识,文中有非常详细的图文解说及代码示例,对正在学习java基础的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论