Stream流报错Duplicate key

news2024/12/26 12:42:48

目录

  • 1、场景
  • 2、问题
  • 3、解决办法
  • 4、完整代码

1、场景

有一个客户列表,每个item里有客户id、name、客户开的公司。
现在根据客户id分组,以客户id为key,把id相同的放到value里,构建一个Map。
这样可以快速根据id,获取相关的客户信息。

2、问题

有些客户就是牛,开了好几个公司。即,有好几条数据,客户号相同,公司名不同。
使用Stream流报错,Duplicate key Customer(id=1, name=杰克马, company=掏宝)
这个写法要求ID必须是唯一的。
在这里插入图片描述

3、解决办法

一个客户多个公司,那就只存一个公司名,保留最开始出现的那个 。

Map<String, Customer> map2 = cc.stream().collect(Collectors.toMap(Customer::getId, info -> info, (existing, replacement) -> existing));

4、完整代码

// An highlighted block
 public static void test2(){
        List<Customer> cc = setData();
        Map<String, Customer> map2 = cc.stream().collect(Collectors.toMap(Customer::getId, info -> info, (existing, replacement) -> existing));
        log.info("----map2="+map2.toString());
}

private static  List<Customer> setData() {
        Customer c = new Customer();
        c.setId("1");
        c.setName("杰克马");
        c.setCompany("掏宝");

        Customer c1 = new Customer();
        c1.setId("1");
        c1.setName("杰克马");
        c1.setCompany("阿狸芭芭");

        Customer c2 = new Customer();
        c2.setId("1");
        c2.setName("杰克马");
        c2.setCompany("叽福宝");

        Customer c3 = new Customer();
        c3.setId("2");
        c3.setName("Pony马");
        c3.setCompany("疼迅");

        Customer c4 = new Customer();
        c4.setId("3");
        c4.setName("假跃亭");
        c4.setCompany("下周回国造F1汽车公司");

        List<Customer> ccc = new ArrayList<>();
        ccc.add(c);
        ccc.add(c1);
        ccc.add(c2);
        ccc.add(c3);
        ccc.add(c4);
        return ccc;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/913403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM赋能产业数智化业务系统升级的思考

1概述 2022年是人工智能的一个分水岭&#xff0c;ChatGPT&#xff0c;DALL E[ DALL E&#xff1a;是一款可以根据文本描述创建图像的AI工具。]和Lensa[ Lensa&#xff1a;是一款AI美图软件。]等几个面向消费者的应用程序发布了&#xff0c;它们的共同主题是使用生成式人工智能&…

【日常积累】Cookie和Session的区别

背景 会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份&#xff0c;Session通过在服务器端记录信息确定用户身份。 本章将分享一些关于Cooki…

【高危】MarkText<=0.17.1 存在DOM型XSS漏洞 (CVE-2023-2318)

漏洞描述 MarkText 是热门的开源Markdown编辑器&#xff0c;覆盖Windows/Linux/MacOS平台。 MarkText 0.17.1及之前版本中的 pasteCtrl 类未对用户可控的 HTML 内容进行过滤&#xff0c;当用户将攻击者可控的 HTML 代码粘贴至 MarkText 编辑器中时&#xff0c;攻击者可利用DO…

鸿蒙应用开发之基础组件

一、组件简介 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1…

Leetcode---359周赛

题目列表 2828. 判别首字母缩略词 2829. k-avoiding 数组的最小总和 2830. 销售利润最大化 2831. 找出最长等值子数组 一、判断首字母缩略词 纯模拟&#xff0c;代码如下 class Solution { public:bool isAcronym(vector<string>& words, string s) {string tmp…

如何将pdf文件转换成word文档?

如何将pdf文件转换成word文档&#xff1f;PDF文档是我们日常办公中最为常用的电子文档格式的文件&#xff0c;也是在会议、教育培训以及商业营销中经常使用的文档格式。所以说PDF文档的功能较强&#xff0c;且应用场景较多。但是也有例外的时候&#xff0c;比如我们需要将PDF文…

vue项目中使用ts的枚举类型

vue项目中要使用ts的枚举类型需要为script标签的lang属性添加ts属性值 <script lang"ts" setup> </script > 声明枚举类型&#xff1a; //语法 /* enum 枚举名称 {可能的值 }*/ enum scenic_status {"正常" 1,"审核中","暂停…

Prometheus 监控系统---你值得拥有

目录 一&#xff1a;Prometheus 1、Prometheus 概述 2、应用场景 3、Prometheus 的特点 4、Prometheus 的生态组件 &#xff08;1&#xff09;Prometheus server&#xff1a;服务核心组件 &#xff08;2&#xff09;Client Library: 客户端库 &#xff08;3&#xff0…

c语言(12)

第一题 容易下意识认为这个判断是ASCII码值在0到9之间&#xff01; 第二题 第三题 第四题 第五题 第六题 用递归很容易就解决了 第七题

合规试制“精准狙击”秘籍——趣味浅析16949五大质量管理工具

在极其重视产品质量的汽车行业&#xff0c;如何制造出一件合格的产品进而获得主机厂的青睐&#xff0c;就像狙击手射出的子弹是否能命中目标&#xff0c;“百发百中”是每一个汽配供应商的最终梦想。 目前&#xff0c;汽配零部件企业必须通过质量管理体系的认证&#xff0c;才有…

“MyBatis入门及环境搭建“

目录 引言1. 什么是MyBatis2.MyBatis的优势与特点3. MyBatis环境搭建3.1 安装 Java 开发工具包 &#xff08;JDK&#xff09;3.2 下载我的MyBatis插件3.3 创建 MyBatis项目3.4 MyBatis的配置文件 4. MyBatis基本操作5. MyBatis增删改查测试类 6. MyBatis总结 引言 在现代的软件…

网络安全在医疗行业中的重要性

不可否认&#xff0c;现代世界见证了技术和医疗行业的交织&#xff0c;塑造了我们诊断、治疗和管理健康状况的新方式。随着电子健康记录取代纸质文件&#xff0c;远程医疗缩短了患者和医疗服务提供者之间的距离&#xff0c;数字化转型既是福音&#xff0c;也是挑战。最近的全球…

【正点原子STM32连载】第十九章 通用定时器输入捕获实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第十…

一个例子看懂IO模型

1.用户态和内核态 现代操作系统将空间划分为用户空间和内核空间。 用户态&#xff1a;一般都是些应用程序&#xff0c;不能直接的访问内核空间和硬盘。 内核态&#xff1a;操作系统的核心&#xff0c;只有切换到内核态才能操作磁盘。 2.同步、异步、阻塞、非阻塞 我们使用前后…

Java请求webservice踩过的坑

最近项目对接过程中&#xff0c;因为对方系统比较旧&#xff0c;我们和对方进行交互使用webservice方式进行&#xff0c;对方给出相关文档&#xff0c; 接口地址&#xff1a;http://ip:port/abc/def/xxxService?wsdl 接口名称&#xff1a;methodA 1-springboot配合CXF使用 …

智慧水务建设项目可研报告-222页【可研报告】

导读&#xff1a;原文《智慧水务建设项目可研报告-222页【可研报告】》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 部分内容&#xff1a; 业务需求分析 3.3.1业…

CentOS7中使用Docker进行MySQL主从复制【论文式教程】

1、安装Docker 卸载docker sudo yum remove docker*安装 yum-utils 工具集&#xff0c;它提供了一些额外的命令和功能&#xff0c;帮助你更好地管理 YUM 软件包管理器。其中包含了一个工具叫做 yum-config-manager&#xff0c;它用于管理 YUM 配置&#xff0c;包括软件仓库源…

计算机视觉:比SAM快50倍的分割一切视觉模型FastSAM

目录 引言 1 FastSAM介绍 1.1 FastSAM诞生 1.2 模型算法 1.3 实验结果 2 FastSAM运行环境构建 2.1 conda环境构建 2.2 运行环境安装 2.3 模型下载 3 FastSAM运行 3.1 命令行运行 3.1.1 Everything mode 3.1.2 Text prompt 3.1.3 Box prompt (xywh) 3.1.4 Points p…

Docker容器学习:部署安装Docker基础使用

目录 1、安装Docker-CE 1&#xff09;参考阿里云的yum安装 2&#xff09;二进制安装docker&#xff08;推荐、生产环境使用较多&#xff09; 3&#xff09;配置Docker镜像加速 2、下载系统镜像&#xff08;Ubuntu、 centos&#xff09; 1&#xff09;先查看我们所需的镜像…

如何通过人工智能和自动化提高供应链弹性?

全球供应链中的数字化转型已经引起了广泛关注&#xff0c;尽管在过去的十年中&#xff0c;这一话题被广泛讨论&#xff0c;但许多公司仍然对如何实现这一不明确的目标感到困惑。人们普遍认识到这种转变的重要性&#xff0c;而新冠疫情及其带来的巨大影响也为行业向数字化转型方…