Java中用Stream流对List对象集合转Map时key值重复的操作

这篇具有很好参考价值的文章主要介绍了Java中用Stream流对List对象集合转Map时key值重复的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

看完你还不懂,你直接喷··

定义:

1.List是一个装Dto对象的集合

2.Dto里面有ID属性,name属性等等

3.Dto里面的ID会重复

 现在要把List转成以ID为key值的map,明显key不能重复啊,所以应该怎么操作呢?

(需要你有java8Stream流的基本概念,map的基本概念)

 操作1:重复key,选择保留其中一个value值

代码:

Map<String, Dto> dataMap = List.stream().collect(Collectors.toMap(

e -> e.getId(),

e -> e,

(k1, k2)-> k1)

);

解释:这是一个流式操作

e -> e.getId() = 它把对象Dto中id取出来当成key

e -> e = value的值就是本身对象Dto

(k1, k2)-> k1 = 并且解释了当key值重复时它会将第一个重复的值保留。

总结:这样的一个操作可以满足key值重复时value值保留并且不报错,但是还是有风险,不知道你保留的具体是不是你要的值。

操作2:重复key,把value叠加到一个List集合中,到达按id分组的效果

代码:

Map<String, List<Dto>> dataMap = List.stream().collect(Collectors.toMap(

e -> e.getId(),

e -> {

        List<Dto> list = new ArrayList<>();

        list.add(e);

        return list;

},

( List<Dto> list1, List<Dto> list2)-> {

        list1.add(list2);

        return list1;

})

);

解释:这是一个流式操作

e -> e.getId() = 它把对象Dto中id取出来当成key

e -> {

        List<Dto> list = new ArrayList<>();

        list.add(e);

        return list;

}

 = value的值放入一个集合里面

( List<Dto> list1, List<Dto> list2)-> {

        list1.add(list2);

        return list1;

})

= 当key值重复时它会将key值也就是id相同的数据都添加到一个集合对象中。

总结:这样的一个操作可以满足key值重复时value值,按id分组得到一个Map<String, List<Dto>> dataMap对象文章来源地址https://www.toymoban.com/news/detail-799500.html

到了这里,关于Java中用Stream流对List对象集合转Map时key值重复的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    可以使用Java 8中的Stream API将List转换为Map,并根据某个属性作为键或值。以下是一些示例代码: 在这个示例中,将Person对象列表转换为Map,其中键为Person对象的name属性,值为Person对象本身。 在这个示例中,将Person对象列表转换为Map,其中键为Person对象本身,值为Person对象的

    2024年02月13日
    浏览(62)
  • 使用Stream流对集合排序

    有一些业务需要对集合按照一些规则进行排序,本篇介绍如何用Stream()对集合进行升序或者降序操作。 之前只有接触过使用数据库进行排序,有一些情况需要不同的排序结果,如果进行多次查询会多次操作数据库,所以有些地方使用流对集合操作是更好的选择。 Stream 流 - 调

    2024年02月12日
    浏览(58)
  • stream流的使用-获取list集合中对象的单个字段list集合,进行累加操作

    场景及代码案例源于实际项目 现存一list集合,其中保存了投资人的信息。 Person (name, age, money rateOfReturn) 其中的money表示投资人现有资产,rateOfReturn表示投资年回报率 需求: 1.计算投资人年龄之和; 2.根据现有资产及投资回报率,计算所有投资人一年后的资产总和; 实体

    2023年04月22日
    浏览(63)
  • Stream流 - 两个list集合对象属性的合并、对象属性值运算

    📅 合并两个 list<map>, 并将 userId 相同的所有属性合并到一个 map 中 list1中对象的属性:userId、userName list2中对象的属性:userId、gender、age 📌 最终总集合中对象的属性:userId、userName、gender、age 运行结果: 结果可见,userId 相同的所有属性合并到集合 list1中。 📅 合并两个

    2024年02月06日
    浏览(123)
  • 使用Stream流筛选出List集合中符合条件的实体对象

    使用stream流筛选出List集合中符合条件的实体对象 注意:使用findFirst()方法返回的是符合条件的第一个元素,使用findAny()方法在多线程并发访问下是符合条件的任意元素 示例: 结果:

    2024年02月16日
    浏览(52)
  • java 8 stream toMap key的重复问题

    工作中遇到需要将某个List里面的实体类的两个属性对应起来,比如根据姓名找到年龄,就是将List里面的entity属性解析之后放到Map里。 实体类: 逻辑: 单纯常规写法肯定没什么问题,就是后面的key会被覆盖,但是stream流不行,会报错。 Collectors.toMap这个方法其实是有三个参数

    2024年01月22日
    浏览(36)
  • Java中list集合stream流去重

    准备类: (1)根据单字段name去重 (2)根据多字段name price去重 (3)示例 输出打印结果

    2024年02月09日
    浏览(52)
  • springboot读取yml文件中的list列表、数组、map集合和对象方法实例

    目录前言application.yml定义list集合application.yml定义数组类型总结 前言 springboot配置文件yml类型简单的风格,十分受大家的欢迎,支持字符string类型,支持列表list类型,支持集合map类型,支持数组array类型,支持类对象类型,下面我们来实战下这些形式的配置如何取值 applicatio

    2024年02月09日
    浏览(48)
  • Java Stream:List分组成Map或LinkedHashMap

    在Java中,使用Stream API可以轻松地对集合进行操作,包括将List转换为Map或LinkedHashMap。本篇博客将演示如何利用Java Stream实现这两种转换,同时假设List中的元素是User对象。 List转Map有两种Map格式,分别是 MapString, User 和 MapString, List ,下面我将分别展示: 转换成MapString, User我们

    2024年02月03日
    浏览(51)
  • Java8特性,Stream流的使用,收集成为map集合

    Java 8引入了Stream API,这是Java集合操作的一个重大改进。Stream API提供了一种高效且易于使用的处理数据的方式。 Stream是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。注意:Stream自己不会存储元素,它不会改变源对象,反而它的操作会返回一个全新的Strea

    2024年04月22日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包