JSONArray内元素排序

本文介绍如何使用Java对JSONArray进行排序,重点讲解了三种方法:重写Comparator、使用Lambda表达式和Comparator.comparing方法,旨在帮助读者理解并掌握不同场景下的排序技巧。

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

现在有一组JSONArray数据,我想以其中一种元素来排序(我这里这个元素是int),这在实际工作中还是经常遇到的,主要是通过重写Comparator。
数据

[{"repayTerm":"3","test":"2018-12-09"},
{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"}]  

第一版

jta.sort(new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((JSONObject)o1).getIntValue("repayTerm")-((JSONObject)o2).getIntValue("repayTerm");
            }
        });

befor:
[{"repayTerm":"3","test":"2018-12-09"},
{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"}]
after:
[{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"},
{"repayTerm":"3","test":"2018-12-09"}]

第二版

        jta.sort(((a,b)->((JSONObject)a).getIntValue("repayTerm")-((JSONObject)b).getIntValue("repayTerm")));

befor:
[{"repayTerm":"3","test":"2018-12-09"},
{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"}]
after:
[{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"},
{"repayTerm":"3","test":"2018-12-09"}]

第三版

        jta.sort(Comparator.comparing(ele -> ((JSONObject) ele).getIntValue("repayTerm")));

befor:
[{"repayTerm":"3","test":"2018-12-09"},
{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"}]
after:
[{"repayTerm":"1","test":"2018-12-19"},
{"repayTerm":"2","test":"2018-12-13"},
{"repayTerm":"3","test":"2018-12-09"}]

三版实际上都是做的同样的事情,寻求简洁优雅用第三版,求真务实追本溯源用第一版,第二版属于中庸,简洁且直观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值