首页 > 编程语言 >java8找出两个集合List<Employee> 中 id相同的元素,再将别的属性合并,放在新的集合里面

java8找出两个集合List<Employee> 中 id相同的元素,再将别的属性合并,放在新的集合里面

时间:2024-01-24 09:46:03浏览次数:26  
标签:List 元素 合并 getId 集合 e1 id

可以使用Java 8的Stream API来实现这个需求。具体步骤如下:

1. 创建一个新的集合,用于存放合并后的元素。
2. 使用Stream的filter()方法过滤出id相同的元素。
3. 使用Stream的map()方法将id相同的元素合并成一个新的元素,其中别的属性可以通过自定义的合并规则来实现。
4. 使用Stream的collect()方法将合并后的元素收集到新的集合中。

下面是一个示例代码: 

List<Employee> list1 = new ArrayList<>();
List<Employee> list2 = new ArrayList<>();

// 假设list1和list2是两个待合并的集合

// 创建一个新的集合,用于存放合并后的元素
List<Employee> mergedList = new ArrayList<>();

// 使用Stream的filter()方法过滤出id相同的元素,并使用map()方法合并别的属性
list1.stream()
        .filter(e1 -> list2.stream().anyMatch(e2 -> e2.getId() == e1.getId()))
        .map(e1 -> {
            Employee e2 = list2.stream().filter(e -> e.getId() == e1.getId()).findFirst().get();
            // 自定义的合并规则
            String name = e1.getName() + "-" + e2.getName();
            int age = e1.getAge() + e2.getAge();
            return new Employee(e1.getId(), name, age);
        })
        .forEach(mergedList::add);

// 输出合并后的结果
mergedList.forEach(System.out::println);

 

在上述代码中,假设Employee类有三个属性:id、name和age。我们通过filter()方法找出id相同的元素,然后通过map()方法将别的属性合并成一个新的元素。最后,通过collect()方法将合并后的元素收集到新的集合mergedList中。

标签:List,元素,合并,getId,集合,e1,id
From: https://www.cnblogs.com/RedOrange/p/17880936.html

相关文章

  • 利用SOLIDWORKS Flow Simulation来进行旋转流体仿真
    前段时间,一个朋友去到一家做水泵的行业,问我SOLIDWORKS能够做流体仿真么?我说,能啊。朋友又问,我现在做水泵,里面的叶片旋转,可以模拟么?我说,当然可以了啊。那么,我就做了个小例子给他,首先,我先建了个如下图所示模型,当然真正的泵不是这样的,我这个,只是玩具,甚至连玩具都称不上。  看到......
  • uniapp打包Android程序的踩坑
    因为在uniapp中无法使用dom,导致部分三方库无法使用,需要在webview中使用,所以需要把使用了dom的三方库的页面渲染到webview中去因为上面再webview中渲染了界面,所以当要再webview中和原生页面互动就又是问题了,网上找了一圈webview和uniapp原生互动的操作都没能实现,有实现了的评论下......
  • QOJ 1963 Squid Game
    令\(a\leb\lec\)。这显然是可以通过交换得到的。考虑若\(a=1\)怎么做。考虑到若把\(b\)或者\(c\)给\(a\),\(a\)就会翻倍。那就把\(b\)拆成二进制,考虑让\(b\)变为\(0\)。从低位到高位,如果\(b\)这一位为\(1\)就让\(b\)给\(a\),否则\(c\)给\(a\)。那......
  • .NET集成IdGenerator生成分布式全局唯一ID
    前言生成分布式唯一ID的方式有很多种如常见的有UUID、Snowflake(雪花算法)、数据库自增ID、Redis等等,今天我们来讲讲.NET集成IdGenerator生成分布式全局唯一ID。分布式ID是什么?分布式ID是一种在分布式系统中生成唯一标识符的方法,用于解决多个节点之间标识符重复或性能问题。分布......
  • oceanbase中的trace_id如何转换为地址信息
    日常运维过程中,我们经常会使用OceanBase的trace_id来定位问题,trace_id是唯一表示SQL执行语句的,如果我们知道trace_id如何转换为地址,我们就知道了该SQL在哪个节点上执行的。下面来演示如何通过trace_id来获取地址信息以及端口 lixingdeMacBook-Pro:c_languagelihanghang$sh......
  • 遍历删除集合元素
    1publicclassTest{2publicstaticvoidmain(String[]args){3List<String>list=newArrayList<>();4list.add("张三");5list.add("张三");6list.add("李四");7......
  • Blazor SSR/WASM IDS/OIDC 单点登录授权实例4 - 部署服务端/独立WASM端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorSSR/WASMIDS/OIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorSSR/WASMIDS/OIDC单点登录授权实例2-登录信息组件wasmBlazorSSR/WASMIDS/OIDC单点登录授权实例3-服......
  • Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Winform 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorSSR/WASMIDS/OIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorSSR/WASMIDS/OIDC单点登录授权实例2-登录信息组件wasmBlazorSSR/WASMIDS/OIDC单点登录授权实例3-服......
  • Microsoft 365 开发:开发者如何使用App ID连接Graph API的方法汇总
    51CTOBlog地址:https://blog.51cto.com/u_13969817在上文中我们介绍了如何在AzureAD中注册Application并授权相关GraphAPI,本文将给大家介绍开发者如何使用AppID和Certificate(Secret)通过PowerShell连接GraphAPI?采用AppID和Certificate通过PowerShell连接GraphAPI的命令如下所......
  • 板子集合
    tarjan点击查看代码//缩点voidtarjan(intu){dfn[u]=low[u]=++t;s[++top]=u;vis[u]=1;for(inti=0;i<g[u].size();++i){intv=g[u][i];if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);}elseif(vis[v])low[u]=......