import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; public class JsonTest { public static void main(String[] args) {
String msg = "[{\"serviceCode\":\"MCY000003\",\"serviceName\":\"床位费\",\"discount_rate\":\"80%\",\"minoutdays\":\"0\",\"maxoutdays\":\"5\"},{\"serviceCode\":\"MCY000002\",\"serviceName\":\"床位费\",\"discount_rate\":\"80%\",\"minoutdays\":\"0\",\"maxoutdays\":\"5\"},{\"serviceCode\":\"MCY000001\",\"serviceName\":\"床位费\",\"discount_rate\":\"80%\",\"minoutdays\":\"0\",\"maxoutdays\":\"5\"},{\"serviceCode\":\"MCY000001\",\"serviceName\":\"床位费\",\"discount_rate\":\"80%\",\"minoutdays\":\"0\",\"maxoutdays\":\"5\"},{\"serviceCode\":\"MCY000003\",\"serviceName\":\"床位费\",\"discount_rate\":\"80%\",\"minoutdays\":\"0\",\"maxoutdays\":\"5\"},{\"serviceCode\":\"MCY000005\",\"serviceName\":\"床位费\",\"discount_rate\":\"80%\",\"minoutdays\":\"0\",\"maxoutdays\":\"5\"}]";
groupByCode(msg);
} private static Map<String, List<?>> groupByCode(String msg) {
JSONArray data = JSONArray.parseArray(msg);
Map<String, List<?>> dataMap = new HashMap<String, List<?>>();
//数据分组算法
for (int i = 0; i < data.size(); i++) {
JSONObject json = (JSONObject)data.get(i);
List<Object> tempList = (List<Object>) dataMap.get(json.get("serviceCode"));
if(tempList == null) { //说明是第一次,则创建list
tempList = new ArrayList<>();
tempList.add(json);
dataMap.put(json.get("serviceCode").toString(), tempList);//放入map中
}else {
tempList.add(json);
}
}
//遍历
for (String serviceCode : dataMap.keySet()) {
System.out.println(serviceCode+":"+dataMap.get(serviceCode));
}
return dataMap;
} }

java按某个字段对数据分组的更多相关文章

  1. 前端传数据到后台,后台用实体类接收不到引发的思考----Java bean中字段命名潜规则

    1.按照Java语法规范,通常在实体类中的属性,首字母都是小写的.这是由于JavaBean的规范导致的.一般JavaBean属性都是首字母小写,以驼峰命名格式命名,相应的 getter/setter ...

  2. GeoMesa Java API-写入与查询数据

    GeoMesa Java API-写入与查询数据 写入数据 DataStore SimpleFeatureType SimpleFeature 写入 查询数据 几个常用查询条件 设置最大返回条目: 设 ...

  3. 【python cookbook】【数据结构与算法】15.根据字段将记录分组

    问题:想根据字典或者对象实例的某个特定的字典(比如日期)来分组迭代数据 解决方案:itertools.groupby()函数在对数据进行分组时特别有用(前提是先以目标字典进行排序) rows = [ ...

  4. pandas学习(数据分组与分组运算、离散化处理、数据合并)

    pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...

  5. MySQL聚合函数与数据分组

    我们最常需要的是汇总数据而不是把他们实际检索出来 确定表中行数(或满足某个条件或包含某个特定值的行数) 确定表中行组的和 找出表列(或所有行或特定列)的最大值,最小值和平均值 聚集函数是运行在行组上, ...

  6. java通过Stream对list集合分组

    java通过Stream对list集合分组 现在有一个List集合,想对该集合中的数据分组处理,想到java8中的stream,就搞来试试,非常给力!例子如下 1 2 3 4 5 6 7 8 9 10 ...

  7. Python: 字典列表: 通过某个字段将记录分组

    问题:有一个字典或者实例的序列,想根据某个特定的字段比如date 来分组迭代访问. answer: itertools.groupby函数对于这样的数据分组操作非常实用 eg: rows = [{'a ...

  8. Oracle分组函数以及数据分组

    简单总结一下对于数据的分组和分组函数. 本文所举实例,数据来源oracle用户scott下的emp,dept ,salgrade 3表:数据如下: 一.分组函数 1.sum()求和函数.max()求最 ...

  9. 9.数据分组 ---SQL

    一.创建分组 分组是使用SELECT语句的GROUP BY子句建立的.理解分组的最好办法是看一个例子: SELECT vend_id, COUNT(*) AS num_prods FROM Produ ...

随机推荐

  1. luogu P5023 填数游戏

    luogu loj 被这道题送退役了 题是挺有趣的,然而可能讨论比较麻烦,肝了2h 又自闭了,鉴于CSP在即,就只能先写个打表题解了 下面令\(n<m\),首先\(n=1\)时答案为\(2^m\ ...

  2. js的一些兼容融性问题

    1.非行内样式获取 高级浏览器 getComputedStyle(obox.false)//获取所有属性 ie浏览器 box.currentStyle//获取所有属性 兼容写法 function ge ...

  3. javascript定义一个list

    JavaScript可以定义数组类型,在javascript语言中List叫Array,它有以下2种定义方式方式1:var array=new Array();方式2:var array=[];通常在 ...

  4. ES6模块化及优点,简单案例让你秒懂

    模块化:模块是一个文件     好处:         1.减少命名冲突         2.避免引入时的层层依赖         3.可以提升执行效率     **第一种方法************ ...

  5. PHP 手机短信发送验证码

    点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 本篇设计的知识点有点多,我会分类将,同学们可 ...

  6. Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配 ...

  7. 【Day4】3.urllib模块使用案例

    import urllib.request as ur ret = ur.urlopen('https://edu.csdn.net/').read() with open('edu.html','w ...

  8. Delphi 执行线程对象

  9. Jmeter中间件处理-ActiveMQ

    消息队列是目前的主流中间件,我们在日常测试过程中,无论是接口还是压力测试,都会遇到需要处理这些中间件数据的情况.本文以Activemq的Topic为例,说明如何基于Jmeter实现消息队列数据的发送和 ...

  10. c#读取文件夹路径,并保存在textBox1中

    private void button3_Click(object sender, RoutedEventArgs e) { System.Windows.Forms.FolderBrowserDia ...