java8两个List指定对象属性进行合并

java jdk8 使用stream实现两个list集合合并成一个list集合(对象属性的合并) java使用stream实现list中对象属性的合并: 根据两个List中的某个相同字段合并成一条List,包含两个List中的字段为什么要用和做集合的处理? 因为效率高、代码简洁、高端大气上档次!(1)描述:比如一个List集合中List,该对象1包含A、B和C列;另外一个List集合中List,该对象2包含A、D列;(2)问题:需要将两个List合成List返回,该对象3包含A、B、C、D列(3)实现:使用stream实现两个list集合合并成一个list集合简要说明:fi... 阅读详情
    public static void main(String[] args) {
        List<EmpQuDaoOneAdmin> empQuDaoOneAdmins = new ArrayList<>();
        EmpQuDaoOneAdmin dEmpQuDaoOneAdmin = new EmpQuDaoOneAdmin();
        dEmpQuDaoOneAdmin.setEmpId(1L);
        dEmpQuDaoOneAdmin.setEmpName(2L);
        dEmpQuDaoOneAdmin.setQudaoOneId(0L);
        empQuDaoOneAdmins.add(dEmpQuDaoOneAdmin);

        EmpQuDaoOneAdmin dEmpQuDaoOneAdmin2 = new EmpQuDaoOneAdmin();
        dEmpQuDaoOneAdmin2.setEmpId(1L);
        dEmpQuDaoOneAdmin2.setEmpName(2L);
        dEmpQuDaoOneAdmin2.setQudaoOneId(0L);
        empQuDaoOneAdmins.add(dEmpQuDaoOneAdmin2);
        List<QuDaoOne> quDaoOnes = new ArrayList<>();


        QuDaoOne dQuDaoOne = new QuDaoOne();
        dQuDaoOne.setId(0L);
        dQuDaoOne.setEmps(Lists.newArrayList());
        quDaoOnes.add(dQuDaoOne);
        // 现根据 id 进行分组
        Map<Long, List<EmpQuDaoOneAdmin>> empQuDaoOneAdminListMap = empQuDaoOneAdmins.stream()
                .collect(Collectors.groupingBy(EmpQuDaoOneAdmin::getQudaoOneId));

        // ----------------------方法一----------------------
        quDaoOnes.parallelStream()
                .forEach(quDaoOne -> {
                    List<EmpQuDaoOneAdmin> empQuDaoOneAdminList = empQuDaoOneAdminListMap.getOrDefault(quDaoOne.getId(), new ArrayList<>());

                    quDaoOne.getEmps()
                            .addAll(empQuDaoOneAdminList.stream()
                                    .map(quDaoOneAdmin -> {
                                        EmpQuDaoOneAdmin empQuDaoOneAdmin = new EmpQuDaoOneAdmin();
                                        empQuDaoOneAdmin.setEmpId(quDaoOneAdmin.getEmpId());
                                        empQuDaoOneAdmin.setEmpName(quDaoOneAdmin.getEmpName());
                                        return empQuDaoOneAdmin;
                                    }).collect(Collectors.toList())
                            );
                });
        System.out.println(quDaoOnes);

        // ----------------------方法二----------------------
        injection(empQuDaoOneAdmins, EmpQuDaoOneAdmin::getQudaoOneId, quDaoOnes, QuDaoOne::getId,
                (empQuDaoOneAdmin, quDaoOne) -> {
                    EmpQuDaoOneAdmin empQuDaoOneAdmin2 = new EmpQuDaoOneAdmin();
                    empQuDaoOneAdmin2.setEmpId(empQuDaoOneAdmin.getEmpId());
                    empQuDaoOneAdmin2.setEmpName(empQuDaoOneAdmin.getEmpName());
                    quDaoOne.getEmps().add(empQuDaoOneAdmin2);
                }
        );
        System.out.println(quDaoOnes);
    }

    public static <T, T2, R extends Serializable> void injection(List<T> aList, Function<T, R> mapper, List<T2> bList, Function<T2, R> mapper2, IConvert<T, T2> convert) {
        aList.forEach(a -> {
            List<T2> collect = bList.stream().filter(b -> Objects.equals(mapper.apply(a), mapper2.apply(b))).collect(Collectors.toList());
            for (T2 t2 : collect) {
                convert.accept(a, t2);
            }
        });
    }

    @FunctionalInterface
    interface IConvert<T, T2> {
        void accept(T t, T2 t2);
    }

    @Data
    static class EmpQuDaoOneAdmin implements Serializable {
        private Long empId;
        private Long empName;
        private Long qudaoOneId;
    }

    @Data
    static class QuDaoOne implements Serializable {
        private Long id;
        private List<EmpQuDaoOneAdmin> emps;
    }

lammps蒙特卡洛MC模拟案例 在lammps中,和MC相关的模拟命令有三个:fix gcmc、fix atom/swap、fix sgcmc。在一个lammps模拟中,mc和md可同时存在,间隔运行,所以设置fix sgcmc命令的同时,可以同时设置系综(nve、nvt或者npt)。lammps官网自带案例中也有一个fix sgcmc的案例,主要模拟FeCu合金的MC建模。sgcmc命令可应用到合金的模拟中,如短程有序模拟。MC运行间隔为100步,最终的浓度比例为0.02,也就是2%的Fe原子交换为Cu原子。大家好,我是小马老师。 阅读详情

相关推荐

Unity地形优化实战:LOD、合批与HLOD打造流畅开放世界

在计算机图形学与游戏开发中,渲染优化是保障应用流畅运行的核心技术。其基本原理在于通过算法与策略,在视觉保真度与硬件资源消耗之间寻求最佳平衡,旨在提升帧率、降低功耗。这一技术的核心价值在于,它直接决定了大规模场景(如开放世界游戏)在性能受限平台(尤其是移动设备)上的可行性。具体到地形渲染这一关键应用场景,开发者需要综合运用多层次细节(LOD)技术来动态调整模型精度,并通过Draw Call合批(Batching)与GPU实例化(GPU Instancing)来大幅减少CPU到GPU的通信开销。对于超大规模世界

weixin_28077113的博客 332

Java8实现2个list对比生成新的list

Java8实现2个list对比生成新的list

weixin_43025915的博客 2385

HWSD全球土壤数据下载处理

下载地址: http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/

江北20190411的博客 3万+

java8 list.stream()进行分组,并进行组装数据

List <JSONObject> list = new ArrayList<>(); /*排序 下面 需要满足JDK1.8及以上*/ list.sort(Comparator.comparing(x -> x.getString("region"))); /*返回一个map集合,key代表组名,value代表该组中的数据,做分组*/ Map<String, List<JSONObject>> menuRegionMap = list.strea.

Bubu_Niao的博客 3092

Linux系统下Materials Studio 2020安装避坑指南:从依赖包到许可证配置全流程

本文提供了一份在Linux系统上安装Materials Studio 2020的深度避坑指南。详细解析了从系统依赖包检查、安装流程、许可证配置到Gateway服务部署的全过程,并分享了与Slurm作业调度系统集成的实战经验,旨在帮助用户高效、稳定地完成部署。

weixin_29313547的博客 385

ABAP传输自定义IDOC实例

首先确定出站方和入站方,本例中我使用150作为发送方将200作为接收方。 发送端系统配置 进入tcode-SALE,点击定义逻辑系统,这里我定义D01CLNT150为发送端, D01CLNT200为接收端 2,将逻辑系统分配给对应的client 3,进入tcode-WE31,创建IDOC开发段(segment)这里可以按照实际需求创建想要传输的结构,为求简单我创建了ZKNA1并选取了几个客户主数据的字段作为示例 4,进入tcode-WE30,创建Idoc Ty...

Nathan的博客 4076

java8,两个list对象根据某个相同的字段取交集。

本来用的两个for循环的方式写了出来,但是觉得代码有点多。下面我们可以用java8 提供的stream流的方式来实现,不多说直接上代码。以上就是通过java8实现两个集合根据某个字段获取交集,记录一下。有做的不好的地方欢迎前来指正。

m0_58872109的博客 4200

别再手动配IP了!用NI-USRP Configuration Utility快速搞定USRP 2954与LabVIEW连接

本文详细介绍了如何使用NI-USRP Configuration Utility快速配置USRP 2954与LabVIEW的连接,解决传统手动IP配置的繁琐问题。通过图形化工具自动完成设备发现、IP设置和连接验证,大幅提升软件无线电实验效率,特别适合信号收发应用场景。

weixin_27102543的博客 291

java流对List中(一个或多个)相同属性的实体合并

【代码】java流对List中(一个或多个)相同属性的实体合并。

weixin_51439775的博客 3090

蓝牙攻防实战指南:低功耗蓝牙

Bluetooth Low Energy(也称Bluetooth Smart)是经典蓝牙(Bluetooth Classic)的演进版本,设计目标是实现极低功耗,适用于无需频繁更换电池的设备,如智能手环、健康监测器、蓝牙标签等。Bluetooth Low Energy 是一项极具前景的无线通信技术,它以极低的功耗实现了短距离高效通信,广泛应用于智能设备和物联网领域。然而,其简化的协议结构和配对机制也带来了不小的安全挑战。

idlecloud0105的博客 682

智能工厂评估模型研究

摘要:通过对国内外现有智能制造评估模型的研究,结合重庆制造业行业领跑者与落后者之间差距大的现状,以实现全要素全连接的数字化工厂为出发点,融合工业互联网标识,构建实践可行的智能工厂评估模型推动中小型企业参与智能制造转型,缓和两极分化问题。本评估模型包含工厂体系架构的3个层级,提供用于推动智能制造转型的参考,包括设计、生产、管理的全过程评估。关键词:智能制造评估模型;智能制造转型;全连接工厂;工业互联网标识0 引言受行业需求与技术创新的影响,全球制造业在历经了工业1.0机械化、工业2.0电气化和工业3.0自动

罗伯特技术屋 676

Java1.8对List集合操作汇总

Java1.8对List集合操作汇总

ChickenBro_的博客 1871

风控域——知识图谱相关原理

本文全面介绍了知识图谱在风控领域的应用原理。从基础知识入手,阐述了知识图谱的定义、概念及应用场景,重点聚焦于金融风控。进一步讲解了知识图谱的技术架构,涵盖计算、融合与构建等方面。深入探讨了知识表示、建模、抽取、挖掘、存储、融合、检索和推理等关键技术原理,并结合金融风控实际需求,详细说明了各技术环节的具体应用方法与流程,为构建高效风控知识图谱提供了理论与实践指导。

庄小焱 606

Java8-使用stream实现list中对象属性的合并(去重并求和)

前言 需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为BillsNums,有id、nums、sums三个属性,其中id表示唯一值,需要nums与sums进行求和,并最后保持一份。例如说:(“s1”, 1, 1),(“s1”,2,3),(“s2”,4,4), 求和并去重的话,就是(“s1”, 3, 4),(“s2”,4,4) 对象与属性 class BillsNums ...

梓鸿 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java8 使用stream实现两个list集合合并成一个list集合及List切成多个list

public class ListDateSpit { private List<String> listData = new ArrayList<>(); @Before public void testInitData() { for (int i = 0; i < 1000; i++) { listData.add(String.format("数据ID-%s", i + 1)); ..

liuerchong的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java怎么把多个对象的list的数据合并

然而,对于List的合并,我们可能需要一个确实包含所有元素的新List,而不是一个视图。在Java中,将多个对象的List合并通常涉及到遍历这些List并将它们的元素添加到一个新的List中。返回的是一个新的集合,它包含了所有给定集合的元素的视图,但这些元素并不保证是唯一的(除非原始集合中的元素本身就是唯一的)。这个示例提供了将多个对象的List合并成一个List的详细步骤,并且代码可以直接运行,具有实际的参考价值和意义。最后,我们打印了合并后的List,展示了合并的效果。

sdgfafg_25的博客 1973

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java8 list根据对象属性去重_Java8使用stream实现list中对象属性的合并(去重并求和)...

前言需要对一个list中的对象进行唯一值属性去重,属性求和,对象假设为billsnums,有id、nums、sums三个属性,其中id表示唯一值,需要nums与sums进行求和,并最后保持一份。例如说:(“s1”, 1, 1),(“s1”,2,3),(“s2”,4,4), 求和并去重的话,就是(“s1”, 3, 4),(“s2”,4,4)对象与属性class billsnums {private ...

weixin_39639286的博客 1750

Java Stream比较两个List的差异,并取出不同的对象

上述代码中,将两个List类型的对象list1和list2转换为Stream类型,并调用filter方法筛选出不同的对象。最后通过collect方法将不同的对象转换为List类型,并输出结果。可以使用Java8的Stream API来比较两个List的差异,并取出不同的对象。2. 调用Stream的filter方法,将不同的对象过滤出来;3. 将过滤出的不同的对象转换为List类型。1. 将两个List转换为Stream类型;

Ascend1977的博客 1万+

llist对象两个属性相乘在相加_Java8使用stream实现list中对象属性的合并(去重并求和)...

前言需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为BillsNums,有id、nums、sums三个属性,其中id表示唯一值,需要nums与sums进行求和,并最后保持一份。例如说:(“s1”, 1, 1),(“s1”,2,3),(“s2”,4,4), 求和并去重的话,就是(“s1”, 3, 4),(“s2”,4,4)对象与属性class BillsNums {private ...

weixin_28687415的博客 4205

java8获取两个list的交集和差集_java8 多个list对象用lambda求差集操作

业务场景:调用同步接口获取当前全部有效账户,数据库已存在部分账户信息,因此需要筛选同步接口中已存在本地的帐户。jat免费资源网调用接口获取的数据集合jat免费资源网List list = response.getData().getItems();jat免费资源网本地查询出来的账户集合jat免费资源网List towList = accountRepository.findAll();jat免费资...

weixin_39854369的博客 2690

java 合并list中对象_Java List根据对象的某个属性合并list

package com.test;import java.util.ArrayList;import java.util.List;public class FileTest {public static void main(String[] args) {List beans=new ArrayList();FileBean bean1=new FileBean();bean1.setDirec...

weixin_42360953的博客 849

java8 两个list取差集_java8 多个list对象用lambda求差集操作

业务场景:调用同步接口获取当前全部有效账户,数据库已存在部分账户信息,因此需要筛选同步接口中已存在本地的帐户。调用接口获取的数据集合List list = response.getData().getItems();本地查询出来的账户集合List towList = accountRepository.findAll();筛选差集代码List distinctByUniqueList = list...

weixin_42322686的博客 1万+

lamda 对比两个list_java8 多个list对象用lambda求差集操作

业务场景:调用同步接口获取当前全部有效账户,数据库已存在部分账户信息,因此需要筛选同步接口中已存在本地的帐户。调用接口获取的数据集合List list = response.getData().getItems();本地查询出来的账户集合List towList = accountRepository.findAll();筛选差集代码List distinctByUniqueList = list...

weixin_29045585的博客 4200

java8根据组合属性合并对象

java8 合并两个 list<T>, 并将tickeId相同的所有属性合并到一个T中(注意数量不等的时候取前者还是后者),自身list合并。log.info("合并去重后的bo:{}",unique1.size());log.info("合并后的bo:{}",list.size());最总集合中对象的属性:ticketId、ticketName、saleNum、batchAvailableNum。//合并后的两种目录都有的,会有重复,保存的时候taskId ,tileId去重一样。

yuhui666666的博客 1787
上一篇: Java 根据方法路径获取方法上面注解
下一篇: Java单表链接外表id数据填充
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值