场景:有一个List集合,获取到集合里边同类型数据的条数,及金额
模拟实例:
1、创建实体类
package com.cn.acquireTotal;
import lombok.Data;
/**
* 根据类型,计算出该类型下的总金额,总条数
* @author wyd
* @version 1.0
* @date 2022/10/14 9:51
*/
@Data
public class Totlal {
//1-成功 2-失败
private String type;//状态
private BigDecimal amt;//金额
public Totlal() {
}
public Totlal(String type, BigDecimal amt) {
this.type = type;
this.amt = amt;
}
}
2、工具类,使用map接收
public class Util{
/**
* 调用方法
* @param list 传入需要计算的集合
* @return 返回map,包含总条数,总金额
*/
private static Map<String ,Object> number(List<Totlal> list) {
//总金额
BigDecimal bigs = BigDecimal.ZERO;
List<BigDecimal> listBig = new ArrayList<>();
//成功
BigDecimal bigTrue = BigDecimal.ZERO;
List<BigDecimal> listBigTrue = new ArrayList<>();
//失败
BigDecimal bigFalse = BigDecimal.ZERO;
List<BigDecimal> listBigFalse = new ArrayList<>();
//将金额放入相应的集合中
for (Totlal totlal : list){
//总
if (totlal.getAmt()!= null){
String replace = totlal.getAmt().toString().replace(",", "");
listBig.add(new BigDecimal(replace));
}
//成功
if (totlal.getType().equals("1")){
String replace = totlal.getAmt().toString().replace(",", "");
listBigTrue.add(new BigDecimal(replace));
}
//失败
if (totlal.getType().equals("2")){
String replace = totlal.getAmt().toString().replace(",", "");
listBigFalse.add(new BigDecimal(replace));
}
}
//计算金额
if (listBig != null && list.size()>0){
for (BigDecimal bigDecimal : listBig){
bigs = bigs.add(bigDecimal);
}
}
//计算成金额
if (listBigTrue != null && listBigTrue.size()>0){
for (BigDecimal bigDecimal : listBigTrue){
bigTrue = bigTrue.add(bigDecimal);
}
}
//计算失败金额
if (listBigFalse != null && listBigFalse.size()>0){
for (BigDecimal bigDecimal : listBigFalse){
bigFalse = bigFalse.add(bigDecimal);
}
}
//存入map集合
Map<String,Object> map = new HashMap<>();
map.put("totalCount",list.size());//总笔数
map.put("totalAmt",bigs);//总金额
map.put("totalTrue",listBigTrue.size());//成功总笔数
map.put("totalTrueAmt",bigTrue);//成功总金额
map.put("totalFalse",listBigFalse.size());//失败总笔数
map.put("totalFalseAmt",bigFalse);//失败总金额
return map;
}
}
3、测试
public class text{
public static void main(String[] args) {
List<Totlal> list = new ArrayList<>();
//创建实例
Totlal totlal = new Totlal("1",new BigDecimal(200));
Totlal totlal2 = new Totlal("1",new BigDecimal(100));
Totlal totlal3 = new Totlal("2",new BigDecimal(150));
Totlal totlal4 = new Totlal("2",new BigDecimal(400));
//向集合添加数值
list.add(totlal);
list.add(totlal2);
list.add(totlal3);
list.add(totlal4);
System.out.println(list);
//[Totlal(type=1, amt=200), Totlal(type=1, amt=100), Totlal(type=2, amt=150), Totlal(type=2, amt=400)]
//使用map接收获得的参数
System.out.println(number(list));
//{totalAmt=850, totalFalse=2, totalTrue=2, totalTrueAmt=300, totalCount=4, totalFalseAmt=550}
}
}