java统计数量List<Map<String,Object>
发布日期:2021-07-30 03:26:41 浏览次数:3 分类:技术文章

本文共 3356 字,大约阅读时间需要 11 分钟。

     按不同的类型统计数量

1.创建一个bo

import lombok.Data;@Datapublic class SystemInfoBo {	/**编号*/	private String id;	/**类型*/	private String type;	/**超过限定值的数量*/	private long beyondCount;	/**类型总数*/	private long TypeCount;}

2.处理数据

import java.math.BigDecimal;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class AmountTest {	public static void main(final String[] args) {		/**统计结果集中相同编号,不同类型的数量,count大于45的数量*/		final List
> list = queryList(); final List
listBo=new ArrayList
(); Map
> sysMap=null; for (final Map
map : list) { final String id= (String) map.get("id"); final String type = (String) map.get("type"); sysMap=sysMap==null?new HashMap
>():sysMap; Map
tMap = sysMap.get(id); tMap=tMap==null?new HashMap
():tMap; SystemInfoBo sysBo = tMap.get(type); if(sysBo==null){ sysBo=new SystemInfoBo(); sysBo.setId(id); sysBo.setType(type); sysBo.setTypeCount(0); sysBo.setBeyondCount(0); //将数据封装到listBo中 listBo.add(sysBo); } //对不同的类型 计数 long sCount = sysBo.getTypeCount(); sCount++; sysBo.setTypeCount(sCount); final String c = (String) map.get("count"); final BigDecimal big=new BigDecimal(c); //超过限定值45则计数 if(big.compareTo(new BigDecimal("45"))==1){ long beyondCount = sysBo.getBeyondCount(); if(beyondCount>0){ beyondCount++; sysBo.setBeyondCount(beyondCount); }else{ sysBo.setBeyondCount(1); } } tMap.put(type, sysBo); sysMap.put(id, tMap); } log.info("======================原始数据=========================="); for (final Map
map: list) { System.out.println("编号:"+map.get("id")+" 类型:"+map.get("type")+" 数量: "+map.get("count")); } log.info("=====================处理后数据=========================="); //打印结果listBo for (final SystemInfoBo bo : listBo) { System.out.println("编号:"+bo.getId()+" 类型:"+bo.getType()+" 超过限定值数量:"+bo.getBeyondCount()+" 该类型数量:"+bo.getTypeCount()); } } //获取查询结果集 private static List
> queryList(){ /** * 数据如下结构 * id type count * NO010001 T 50 * NO010001 B 40 * NO010001 T 60 * NO010002 T 50 * NO010002 B 10 * NO010003 A 75 * */ final Map
map1=new HashMap
(); map1.put("id", "NO010001"); map1.put("type", "T"); map1.put("count", "50"); final Map
map2=new HashMap
(); map2.put("id", "NO010001"); map2.put("type", "B"); map2.put("count", "40"); final Map
map3=new HashMap
(); map3.put("id", "NO010001"); map3.put("type", "T"); map3.put("count", "60"); final Map
map4=new HashMap
(); map4.put("id", "NO010002"); map4.put("type", "T"); map4.put("count", "50"); final Map
map5=new HashMap
(); map5.put("id", "NO010002"); map5.put("type", "B"); map5.put("count", "10"); final Map
map6=new HashMap
(); map6.put("id", "NO010003"); map6.put("type", "A"); map6.put("count", "75"); final List
> listMap=new ArrayList
>(); listMap.add(map1); listMap.add(map2); listMap.add(map3); listMap.add(map4); listMap.add(map5); listMap.add(map6); return listMap; }}

3.运行结果:

信息: ======================原始数据==========================编号:NO010001 类型:T 数量: 50编号:NO010001 类型:B 数量: 40编号:NO010001 类型:T 数量: 60编号:NO010002 类型:T 数量: 50编号:NO010002 类型:B 数量: 10编号:NO010003 类型:A 数量: 75信息: =====================处理后数据==========================编号:NO010001  类型:T  超过限定值数量:2 该类型数量:2编号:NO010001  类型:B  超过限定值数量:0 该类型数量:1编号:NO010002  类型:T  超过限定值数量:1 该类型数量:1编号:NO010002  类型:B  超过限定值数量:0 该类型数量:1编号:NO010003  类型:A  超过限定值数量:1 该类型数量:1

转载地址:https://blog.csdn.net/u010895512/article/details/54318948 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:spring配置错误重复扫描导致事务失效的问题解决
下一篇:maven 工程常见问题

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月12日 12时43分26秒