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

java8实现list集合中按照某一个值相加求和 实现 public static void main(String[] args) { long a = 342432432; long b=2342342; long c=112221; List<Long> array = new ArrayList<>(); array.add(a); array.add(b); array.add(c); System.out.println((a+b+c)/3); System.out.println( 阅读详情
AI摘要

本文介绍如何使用Java8的流(Stream)API对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 String id;
	private int nums;
	private int sums;
	
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public int getNums() {
        return nums;
    }
    public void setNums(int nums) {
        this.nums = nums;
    }
    public int getSums() {
        return sums;
    }
    public void setSums(int sums) {
        this.sums = sums;
    }
}

数据

public static void main(String[] args) {

	List<BillsNums> billsNumsList = new ArrayList<>();
	BillsNums billsNums = new BillsNums();
	billsNums.setId("1001");
	billsNums.setNums(2);
	billsNums.setSums(100);
	billsNumsList.add(billsNums);

	BillsNums billsNums2 = new BillsNums();
	billsNums2.setId("1001");
	billsNums2.setNums(3);
	billsNums2.setSums(100);
	billsNumsList.add(billsNums2);

	List<BillsNums> result = merge(billsNumsList);
	System.out.println("result:" + JSON.toJSONString(result, true));
}

合并

法一:list做循环求和,去重
/**
 * 将id进行合并nums, sums 相加道回合并后的集合使用Java8的流进行处理
 */
public static List<BillsNums> merge(List<BillsNums> list) {
        Map<String, BillsNums> map = new HashMap<>();
        list.stream()
			.forEach(billsNums -> {
				BillsNums last = map.get(billsNums.getId());
				if(null != last){
					billsNums.setSums(billsNums.getSums() + last.getSums());
					billsNums.setNums(billsNums.getNums() + last.getNums());
					map.put(billsNums.getId(), billsNums );
				}else{
					map.put(billsNums.getId(), billsNums);
				}
			});
        return map.values().stream().collect(Collectors.toList());
        
}
法二:法一的升级版
/**
 * 将id进行合并nums, sums 相加道回合并后的集合使用Java8的流进行处理
 */
public static List<BillsNums> merge(List<BillsNums> list) {
        List<BillsNums> result = list.stream()
        // 表示id为key, 接着如果有重复的,那么从BillsNums对象o1与o2中筛选出一个,这里选择o1,
        // 并把id重复,需要将nums和sums与o1进行合并的o2, 赋值给o1,最后返回o1
        .collect(Collectors.toMap(BillsNums::getId, a -> a, (o1,o2)-> {
			o1.setNums(o1.getNums() + o2.getNums());
			o1.setSums(o1.getSums() + o2.getSums());
			return o1;
		})).values().stream().collect(Collectors.toList());
        return result ;
}

结果

result

别再死记硬背注意力机制了!用Python+PyTorch从零实现一个HAN(Hierarchical Attention Network) 本文详细介绍了如何使用Python和PyTorch从零实现Hierarchical Attention Network(HAN),通过代码级解析帮助读者深入理解层次注意力机制。文章涵盖词级和句子级注意力层的构建、完整HAN架构的实现、训练技巧及注意力可视化方法,特别适合希望掌握高级NLP技术的开发者。 阅读详情

相关推荐

从选卡到验证:CST仿真GPU加速全流程实战指南

本文详细介绍了CST仿真中GPU加速的全流程实战指南,从硬件选型到软件配置,再到性能验证和常见问题排查。通过对比专业卡与游戏卡的性能差异,提供硬件选型建议,并分享驱动安装、关键设置及CST软件配置的黄金法则,帮助用户显著提升仿真效率。

weixin_30650039的博客 394

Java8之List求和

数值类型求和 ArrayList<Double> sumAmountResult = new ArrayList<Double>(); sumAmountResult.add(111d); sumAmountResult.add(222d); sumAmountResult.add(333d); sumAmountResult.add(444d); double sumChildAmountResult = sumAmountResult.stream().mapToDouble(D

qq_43050077的博客 2万+

从零上手SKILL脚本:在Virtuoso中实现版图绘制自动化

本文详细介绍了如何使用SKILL脚本在Virtuoso中实现版图绘制自动化,从基础操作到高级技巧全面覆盖。通过抓取操作日志、转换交互式函数为程序式函数,以及核心函数深度解析,帮助读者快速掌握SKILL脚本编程,大幅提升版图设计效率。文章还提供了实际工程应用案例和调试优化技巧,适合从零开始的初学者。

weixin_28742653的博客 763

java8实现list集合中按照某一个值相加求和,平均值等操作

集合: List<User> user = new User(); user .stream().collect(Collectors.summingInt(User::getAge)) 参数类型: summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值 summarizingInt 统计数据(int)状态, 其中包括c...

F_Z_S的博客 1万+

【opencv3 学习记录】第二章 读取显示保存视频

一:捕获视频函数 1.函数:cv2.VideoCapture(参数) 2.参数说明: (1)开启摄像头:参数一般为0,你可以通过设置成 1 或 者其他的来选择别的摄像头。 (2)从文件夹中获取视频:参数为字符串形式的文件路径 3.示例: cap = cv2.VideoCapture(0) #cap:存放参数 二:读取视频函数 1.函数:cap.read() 2.函数说明: (1)cap.read 中cap与捕获视频函数存放函数一致,可以自己命名.括号一般不用填写 (2)ret,f

m0_64448543的博客 3272

批处理脚本手动双击可以执行,但计划任务中执行失败

问题现象: 使用批处理脚本从linux端(samba server) 备份一些数据,设置计划任务每天凌晨两点定时备份。 1)、windows系统中映射共享文件夹为S:盘,需要输入共享用户名和密码 2)、脚本中使用xcopy命令复制共享目录中的文件到windows本地目录中。 脚本如下: set Name=%date:~0,4%%date:~5,2%%date:~8,2% chcp 65001 REM chcp防止中文乱码 mkdir "E:\脚本备份\bakscripts%Name%" xco

独孤清扬玩DB 4312

Java8中用Lambda表达式合并多个相同属性的对象集合

在实际的业务处理中,我们经常会碰到需要合并同一个集合内相同属性对象的情况,比如,同一个用户短时间内下的订单,我们需要将各个订单的金额合并成一个总金额。那么用lambda表达式和HashMao怎么分别处理该种情况呢?本文以Student的name,age,score为例,一个List集合中有多个Student对象,针对name和age相同属性值的Student对象,对score值相加并合并为一条,介...

qq_43103698的博客 4万+

【TC3xx芯片】TC3xx芯片PFlash的ECC校验问题补充

TC3xx芯片PFlash的ECC校验问题补充

qq_36056498的博客 1153

list的stream流计算同id下重复的对象将数量进行求和,处理合并

list的stream流分组求和

Forever8023的博客 4749

网络管理与维护综合实训2:基于AD证书服务构建企业内部HTTPS安全访问体系

本实训项目通过在Windows Server 2022环境下搭建AD域、DNS服务和Web服务器,实现安全的企业网站访问。主要内容包括:在两台服务器上安装操作系统并配置网络;在S1服务器上部署活动目录域、证书服务和Web服务;创建两个网站(HTTP和HTTPS);配置DNS记录和SSL证书;设置防火墙规则限制HTTP访问而允许HTTPS访问。通过实践掌握了AD证书管理、DNS配置、Web服务器设置及防火墙规则配置等关键技能,为网站管理工作奠定了基础,同时认识到证书管理在Web安全中的重要性。

深耕计算机专业知识与技术。 997

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

去重 属性_Java8使用stream实现list中对象属性的合并(去重并求和)_Java_软件编程...

这篇文章主要介绍了Java8使用stream实现list中对象属性的合并(去重并求和),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下前言需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为BillsNums,有id、nums、sums三个属性,其中id表示唯一值,需要nums与sums进行求和,并最后保持一份。例如说:(“s1”, 1, 1...

weixin_39923945的博客 2019

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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) 对象与属性 1 2 3 4 5 6 7 8 9 10 11 12

yellowatumn的专栏 9002

Camera2Demo

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java合并后求和_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_33171271的博客 854

streamset 数据合并_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_36459547的博客 2053

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 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_30538955的博客 4620

mysql 查找属性并去重_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_33216916的博客 223

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

java合并后求和_站长手册-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_31648507的博客 173
上一篇: java-nio与类加载器
下一篇: 教程 | 入门纯手写JNI编译与使用(适合做demo)
lietobrain
博客等级 码龄11年 227粉丝 44原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值