• 【Java8】对JSONArray 按指定字段排序,升序和倒序,经典


    参考写法

    paramArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getStr("type")));
    paramArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getStr("type")).reversed());
    

    用例调试

    package com.java8.test;
    
    import cn.hutool.json.JSONArray;
    import cn.hutool.json.JSONObject;
    import org.junit.Test;
    
    import java.util.Comparator;
    
    public class DemoJava8Test {
    	/**
    	 * 对JSONArray自定义属性来比较
    	 * 按指定字段排序,升序和倒序
    	 * 

    * 升序 1 2 3 * 倒序 3 2 1 */ @Test public void sortBySpecifiedFieldByNumber() { JSONObject param1 = new JSONObject(); param1.set("type", "2"); JSONObject param2 = new JSONObject(); param2.set("type", "3"); JSONObject param3 = new JSONObject(); param3.set("type", "1"); JSONArray paramArray = new JSONArray(); paramArray.add(param1); paramArray.add(param2); paramArray.add(param3); System.out.println("原始数据:" + paramArray.toString()); paramArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getStr("type"))); paramArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getStr("type")).reversed()); System.out.println("排序(升序):" + paramArray.toString()); System.out.println("排序(降序):" + paramArray.toString()); //原始数据:[{"type":"2"},{"type":"3"},{"type":"1"}] //排序(升序):[{"type":"3"},{"type":"2"},{"type":"1"}] //排序(降序):[{"type":"3"},{"type":"2"},{"type":"1"}] } /** * 增删改的时候 */ @Test public void sortBySpecifiedFieldByString() { JSONObject param1 = new JSONObject(); param1.set("type", "insert"); JSONObject param2 = new JSONObject(); param2.set("type", "update"); JSONObject param3 = new JSONObject(); param3.set("type", "delete"); JSONArray paramArray = new JSONArray(); paramArray.add(param1); paramArray.add(param2); paramArray.add(param3); System.out.println("原始数据:" + paramArray.toString()); paramArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getStr("type"))); System.out.println("排序(升序):" + paramArray.toString()); paramArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getStr("type")).reversed()); System.out.println("排序(降序):" + paramArray.toString()); //原始数据:[{"type":"insert"},{"type":"update"},{"type":"delete"}] //排序(升序):[{"type":"delete"},{"type":"insert"},{"type":"update"}] //排序(降序):[{"type":"update"},{"type":"insert"},{"type":"delete"}] } }

    comparing 方法的使用
    从注释信息不难看出 comparing 方法传入一个函数,这个函数携带一个参数,参数类型为List对象或者JSONArray对象

    reversed 方法的使用
    从注释信息不难看出 reversed 方法返回一个比较器,而且是强制执行此逆序

  • 相关阅读:
    C++多态、虚函数、纯虚函数、抽象类
    [项目管理-25]:高效沟通的利器,结构思考力与树形结构化表达
    lwIP 开发指南(下)
    【Vue3】 computed 完整写法 全选反选 、计算商品总价
    【养成系】Linux常用命令
    运维面临挑战?智能运维管理系统来帮您
    SPASS-数据收集及预处理
    [Java]前中后序遍历二叉树/递归与非递归
    heapq制作优先级队列
    基于Linux 系统聊天室登录与注册实现(03)
  • 原文地址:https://blog.csdn.net/u010638673/article/details/127102634