• 【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 方法返回一个比较器,而且是强制执行此逆序

  • 相关阅读:
    Python大数据之Python进阶(一)介绍
    别再低效筛选数据了!试试pandas query函数
    把前端HTML+CSS+JavaScript脚本嵌入WP的页面中
    对缓冲区的初步认识——制作进度条小程序
    JavaScript 41 JavaScript For of
    go 命令行工具 cobra
    目标检测工具箱MMDetection安装及使用示例
    python的paramiko实现ssh登录
    30天精通Nodejs--第二天:异步编程
    关于vue中关于eslint报错的问题
  • 原文地址:https://blog.csdn.net/u010638673/article/details/127102634