`
一.九---HMK
  • 浏览: 14242 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两个json数组key相同的数据合并,并排序

 
阅读更多

JSONObject jo1 = new JSONObject();

jo1.put("month", "2016-03");

jo1.put("sum", "200");

JSONObject jo2 = new JSONObject();

jo2.put("month", "2015-11");

jo2.put("sum", "400");

JSONObject jo3 = new JSONObject();

jo3.put("month", "2015-07");

jo3.put("sum", "300");

        JSONArray ja1 = new JSONArray();

        ja1.add(jo1);

        ja1.add(jo2);

        ja1.add(jo3);

        

        JSONObject jo4 = new JSONObject();

jo4.put("month", "2016-03");

jo4.put("sum", "100");

JSONObject jo5 = new JSONObject();

jo5.put("month", "2016-02");

jo5.put("sum", "200");

JSONObject jo6 = new JSONObject();

jo6.put("month", "2015-09");

jo6.put("sum", "700");

JSONObject jo7 = new JSONObject();

jo7.put("month", "2015-07");

jo7.put("sum", "200");

        JSONArray ja2 = new JSONArray();

        ja2.add(jo4);

        ja2.add(jo5);

        ja2.add(jo6);

        ja2.add(jo7);

        

        JSONArray ja3 = new JSONArray();

        JSONObject jo = new JSONObject();

        for(int i=0;i<ja1.size();i++){

        for(int j=0;j<ja2.size();j++){

        if(ja1.getJSONObject(i).getString("month").equals(ja2.getJSONObject(j).getString("month"))){

        jo.put("month", ja1.getJSONObject(i).getString("month"));

        int sum1=Integer.parseInt(ja1.getJSONObject(i).getString("sum"));

        int sum2=Integer.parseInt(ja2.getJSONObject(j).getString("sum"));

        int sum = sum1+sum2;

        jo.put("sum", sum);

        ja3.add(jo);

        ja1.remove(i);

        ja2.remove(j);

        }

        }

        }

        

        for(int k=0;k<ja1.size();k++){

        ja3.add(ja1.get(k));

        }

        for(int m=0;m<ja2.size();m++){

        ja3.add(ja2.get(m));

        }

        Collections.sort(ja3);

        System.out.println(ja3);

        

        JSONObject temp = null;

        boolean exchange = false;

        for (int i = 0; i < ja3.size(); i++) {

            exchange = false;

            for (int j = ja3.size() - 2; j >= i; j--) {

                if (ja3.getJSONObject(j+1).getString("month").compareTo(

                        ja3.getJSONObject(j).getString("month")) >= 0) {

                    temp = ja3.getJSONObject(j+1);

                    ja3.set(j + 1, ja3.get(j));

                    ja3.set(j, temp);

                    exchange = true;

                }

            }

            if (!exchange)

                break;

        }

分享到:
评论

相关推荐

    json使用大全

    JSON数组在JavaScript中表现为`[]`,它可以包含任意类型的数据,如字符串、数字、布尔值、null,甚至是其他数组或对象。数组的创建和操作在JavaScript中是相当直观的: 1. **创建数组**: - `var arrayObj = new ...

    JS对象与数组参考大全

    如`push`、`pop`、`shift`、`unshift`用于操作数组元素,`slice`、`splice`用于数组切片和插入/删除元素,`concat`用于合并数组,`indexOf`和`lastIndexOf`查找元素位置,以及`sort`对数组排序: ```javascript arr....

    python当中的pandas库的学习报告

    Pandas提供了`pd.merge`和`pd.concat`两个主要的合并函数,它们分别用于根据键(key-based)和位置(position-based)合并数据。合并时可以处理重复列名,并支持按索引连接数据。 总的来说,Pandas库为Python程序员...

    Vue面试56题(核心高频)

    * concat() 合并多个数组 * filter() 过滤数组中的元素 * flat() 将数组拍平 * slice() 提取数组中的元素 js 堆和栈 在 JavaScript 中,有两种类型的数据:基本数据类型和引用数据类型。 基本数据类型包括数值、...

    JavaScript笔记.pdf

    - `concat()`:将两个或多个数组合并成一个新的数组。 - `sort()`:对数组元素进行排序。 - `reverse()`:反转数组元素的顺序。 #### 对象(Object) 对象是键值对的集合,键通常是字符串,而值可以是任何数据...

    Laravel开发-laravel-collection

    12. **Merge**: 合并两个集合,如果键重复,将优先保留第二个集合的值。 **六、集合的排序操作** 13. **Sort & SortDesc**: 对集合进行升序或降序排序。 14. **SortBy & SortByDesc**: 根据指定的键进行排序。 *...

    08-04-web前端面试题2015-31

    题目要求将两个数组合并,并删除第二个数组的第二个元素。这可以通过`concat()`和`splice()`方法实现: ```javascript var array1 = ['a', 'b', 'c']; var bArray = ['d', 'e', 'f']; var cArray = array1....

    elwg后端培训第二讲1

    PHP提供了一系列数组处理函数,如`is_array()`用于检查是否为数组,`count()`返回数组元素数量,`sort()`对数组排序,`array_merge()`合并数组,`array_push()`向数组末尾添加元素。 面向对象编程是PHP的核心特性之...

    js-pipes:JavaScript 中的 MongoDB 聚合管道实现

    4. **$skip**和**$limit**:这两个阶段分别用于跳过指定数量的文档和限制返回的文档数量。在JavaScript中,它们可以通过数组的切片方法来实现。 5. **$project**:这个阶段用于修改输入文档的结构,可以选择性地...

    js代码-Object.entries()测试2

    `Object.entries()`方法返回一个数组,数组中的每个元素都是一个包含两个值的数组:对象的键和对应的值。这样的设计使得我们能够方便地同时访问键和值,而不仅仅是单个键或单个值。下面是一个简单的示例: ```...

    Pandas_Challenge

    8. **数据合并**:`merge()`和`concat()`分别用于基于键(key-based)和位置(position-based)的合并操作。 9. **数据排序**:`sort_values()`和`sort_index()`可以对数据进行排序,按值或按索引排列。 10. **...

    python面试题245题(附答案).docx

    14. **比较两个列表的元素**:可以使用`set`操作或列表推导式比较两个列表的交集和并集。 15. **新式类与经典类**:新式类继承自`object`,支持更多的特性,如`__slots__`和元类。 16. **内置数据结构**:Python的...

    js代码-Object.entries()的简单用法。

    这个方法返回一个数组,数组的每个元素都是一个包含两个项目的子数组:原始对象中的一个属性名和对应的属性值。在本文中,我们将深入探讨`Object.entries()`的工作原理、用法以及在实际开发中的应用。 ### 1. `...

    JAVA上百实例源码以及开源项目源代码

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    DotNet2.0基础帮助类

    因此,自定义的帮助类可能包含优化的字符串处理方法,如`TrimAll`(批量去除字符串两端空白),`Join`(高效地合并字符串数组)或`FormatWith`(格式化字符串,类似`String.Format`但更高效)。 2. **日期和时间**...

    JQuery文档插件资料

    - **$.extend()**: 合并两个或更多对象,常用于扩展jQuery对象或自定义插件。 - **$.each()**: 遍历数组或对象,执行回调函数。 3. **jQuery插件开发** - **命名空间**: 为了防止命名冲突,通常使用`$.fn....

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 Python 错误更正:布尔值可以作为字典的key 06 Python 今日内容整理 第13章 第13章共1课 第14章 01 数据类型和变量总结 02 集合定义和基本操作方法 03 集合关系运算交,差,并集 04 集合的其他内置方法 05 ...

Global site tag (gtag.js) - Google Analytics