通过JAVA集合求和

本文介绍了一种使用 Java Map 对 List 中具有相同 key 的 bean 类型数据进行聚合的方法,实现了对相同 type 的数值进行求和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]需求:
从数据库取出表的List对象,通过判断List<bean>的主键判断该List是否有相同的属性值,如果有相同属性值,其他的数值叠加。做了个demo。[/b]
bean:

package com.bean;

public class bean {
private String type;
private Integer num;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}

}


实现类:

package com.main;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.bean.bean;

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
List<bean> list = new ArrayList<bean>();

bean demobean6 = new bean();
demobean6.setType("type3");
demobean6.setNum(10);

list.add(demobean6);

bean demobean = new bean();
demobean.setType("type1");
demobean.setNum(2);

list.add(demobean);

bean demobean5 = new bean();
demobean5.setType("type3");
demobean5.setNum(10);

list.add(demobean5);

bean demobean2 = new bean();
demobean2.setType("type1");
demobean2.setNum(30);

list.add(demobean2);

bean demobean3 = new bean();
demobean3.setType("type1");
demobean3.setNum(10);

list.add(demobean3);

bean demobean4 = new bean();
demobean4.setType("type2");
demobean4.setNum(10);

list.add(demobean4);

bean demobean7 = new bean();
demobean7.setType("type8");
demobean7.setNum(1090);

list.add(demobean7);

/*
* 数据结构可以考虑用Map,因为Map相同key值只能有一个,当有相同key值对象put进来时,Map会擦写掉原对象. 实现类似group
* by的功能.
*/
Map<String, Integer> result = new HashMap<String, Integer>();

sort: for (bean item : list) {
if (result.get(item.getType()) == null) {
result.put(item.getType(), item.getNum());// 如果没有此类型,则添加此类型的数值
continue sort;
}
// 如果有此类型,则把此类型的数值修改为-->原来的数值+新数值,实现类似sum功能
result.put(item.getType(), item.getNum()
+ result.get(item.getType()));
}

for (String key : result.keySet()) {
System.out.println(key + " : " + result.get(key));
}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值