集合排序对反射的影响

Java集合排序:Comparator核心用法与实战技巧 在Java集合操作中,排序是常见且关键的技术需求。Comparator作为外部比较器,通过实现compare方法定义元素间的排序规则,解决了类无法修改或需要多维度排序的业务场景。相比Comparable接口,Comparator提供了更灵活的排序控制,支持多条件组合、null值处理和自定义逻辑等高级特性。Java 8引入的Lambda表达式和方法引用进一步简化了Comparator的使用,结合Stream API可以实现声明式的数据排序。在电商商品排序、学生成绩排名等实际应用中,合理使用Comparator 阅读详情

业务情景:

一个列表页面,页面字段来源多表,查询逻辑略复杂,原来一直以主表某个字段排序,做查询的时候就排序做分页查询了即可

现在现场提个需求要用附表字段做排序,当前的逻辑没法在查询里实现排序,我就想查出来所有,再排序,再手动分页。

然后我给实体加了implements Comparable<Entity>, 添加排序方法

@Override
    public int compareTo(Entity o) {       
        return this.backDate.compareTo(o.getBackDate());
    }

对查询出来的list结果 排序

Collections.sort(list, new Comparator<Entity>() {
            @Override
            public int compare(Entity o1, Entity o2) {
                //降序
                return o2.getBackDate().compareTo(o1.getBackDate());
            }
        });

后边再截取分页。 我本地测试也没问题,但是提交到现场运行报错了

报错日志:

------------>反射调用接口服务名:thirdPartyService.sendUserPendingToOA;busiId:40
2885bd71aa39970171f886a44500c1
http://192.168.5.118/
net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1

  at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
        at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:972)
        at net.sf.json.JSONObject._fromString(JSONObject.java:1201)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:165)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:134)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:269)

        at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryB
ean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:32
2)
        at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJob
Bean.java:112)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
ava:525)

看了一圈没看出来这错误和我修改的有什么关系,考虑是其它业务功能有使用反射,对我的修改的功能反射调用,而我也没大改什么,可能就是那个排序的问题。

删掉那段Collections.sort(list, new Comparator<Entity>()  代码再发现场测试,果然不出错了。这种情况第一次遇见,想了半天没明白,只好头疼医头,脚疼医脚,对查询结果list 排序不再用集合的排序,而是转成数组,手动冒泡排序,改完之后测试 果然好了。

Java反射getMethods()方法顺序不确定性解析与解决方案 在Java反射编程中,方法顺序的不确定性是一个容易被忽视但影响深远的技术细节。反射机制作为Java语言动态性的核心,允许程序在运行时获取和操作类信息,广泛应用于框架开发、序列化、动态代理等场景。其技术价值在于提供了灵活的元编程能力,但实现细节的差异可能带来隐藏风险。具体到Class.getMethods()方法,其返回数组的顺序在JVM规范中未被定义,这源于类文件编译输出和JVM内部方法存储结构的实现特性。这种不确定性在依赖方法顺序生成哈希签名、序列化协议或动态代理索引的工程实践中,可能引发跨环境不一致的幽 阅读详情

相关推荐

秋招突击——第二弹——Java的注解+泛型+集合

秋招突击——第二弹——Java的注解+泛型+集合,差不多花了一天来复习java的一些基础知识,明天继续。

Blackoutdragon的博客 1161

net.sf.json.JSONException: A JSONObject text must begin with '{' at character 0 of(从kafka消费者取数据存数据库)

这是从kafka 消费者去去消费生产者产生的数据(产生的完整的一条数据): topic = testKafka, offset = 3266, value = {“data”{“address”:“33”,“conTel”:"",“desc”:"",“email”:"",“eptCarports”:496,“freeTime”:0,“inEntranceNum”:0,“isCharge”:1,“l...

weixin_44168738的博客 6608

PowerDesigner16.5下载和安装教程

一、软件下载 1.下载地址(不用复制,直接点击下载链接即可):链接:https://pan.baidu.com/s/1MSnWHWt3SO2Uz5dt9AANAg提取码:z9kk 二、软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3....

cicong2374的博客 10万+

json数据格式 net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of Error:(f...

substring(3)的用法http://www.w3school.com.cn/jsref/jsref_substring.asp 可能一:sb是要转化的数据,以sb是String为例 charstr[]=sb.toString().toCharArray(); for(inti=0;i<str.length;i++){ ...

weixin_33744854的博客 5363

python多线程实现http代理

python多线程实现http代理文章要求1.py socket模块2.py threading模块3.环境搭建3.1设置代理3.2搭建http简单服务器代码分析1.完整代码2.逻辑结构 文章要求 1.py socket模块 socket模块接触后很简单,我实现的是阻塞性的套接字。 需要了解到,连接套接字,监听套接字,和套接字accept()方法的返回值是元组 数据传递过程sock.recv(1024),sock.send()也不需要转换编码,直接以b"二进制流"传输 2.py threading模块 th

qq_43402663的博客 2508

中标麒麟,postgres报错invalid value for parameter "timeZone":"Asia/Beijing"

在中标麒麟服务器上,安装postgres,启动tomcat容器时,报invalid value for parameter "timeZone":"Asia/Beijing"。 查看postgres运行日志,也报同样的错误。 报错原因:服务器的时区,在Postgres支持的时区目录中找不到。当时在服务器上信息为Beijing 解决步骤: 1. cat /etc/sysconfig/cloc

u010213931的博客 7924

Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!

web项目执行查询的时候报错: Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!19:27:26,672 ERROR [STDERR] org.springframework.jdbc.UncategorizedSQLException: Hiberna

一只喜欢学习的猪仔 2274

RAGFlow核心引擎DeepDoc之PDF解析大起底

本文深入解析RAGFlow中的deepdoc模块,重点介绍了pdf文档解析器的实现细节。deepdoc包含parser(文档解析器)和vision(视觉处理)两大核心功能,其中pdf解析是最复杂的部分。文章详细剖析了PdfParser类的设计架构,包含PlainParser(基础文本提取)、RAGFlowPdfParser(核心处理流水线)和VisionParser(视觉扩展)三个类,它们通过统一的__call__方法返回标准化结果。还具体讲解了初始化过程如何加载OCR引擎、布局识别模型、表格结构识别器等关

yxkong的专栏 2026

json相关异常

1:  fromObject = JSONObject.fromObject(""); net.sf.json.JSONException: A JSONObject text must begin with '{' at character 0 of  at net.sf.json.uti

Amanda1995的博客 2126

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

华为OD机试真题 新系统 9月27号 【数据中心最佳维护窗口】

华为OD机试真题 新系统【数据中心最佳维护窗口】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【数据中心最佳维护窗口】多语言题解。

qq_45776114的博客 1156

Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

鸢尾_的博客 1200

零基础实战:云开发家政维修小程序搭建指南

欢迎来到这本关于构建家政维修小程序的电子书!在当今数字化的浪潮中,线上服务已成为我们生活中不可或缺的一部分。从点餐购物到居家维修,人们越来越习惯通过指尖轻点来解决各种需求。正是基于这样的背景,我们希望通过这个系列,手把手地带领大家从零开始,搭建一个功能完备、体验流畅的家政维修平台。这不仅仅是一本技术教程,更是一次将想法变为现实的探索之旅。我们将深入浅出地讲解如何运用云开发等现代技术,实现从用户下单、支付,到客服派单、工人接单,再到订单完成和权限管理等一系列核心业务流程。

低代码布道师的博客 3432

Java基础、多线程、集合、泛型、注解、反射等相关

2】ArrayList 实现了 RandomAccess接口,支持随机访问,(get和set)效率更高,因为 ArrayList 存储数据结构是基于数组,利用数组的下标直接对元素进行访问。1】线程安全的区别,HashMap线程不安全,HashTable是线程安全的(因为HashTable 的方法是基于 Synchronized 的,而 HashMap 不是,在多个线程访问 HashTable 时,不需要自己为它的方法实现同步)1】Object类是所有类的根类,使用的时候可能需要强制类型转换,但是用 T、?

hkl_Forever的博客 659

【天工Godwork精品教程】天工3.1.7安装教程(附Godwork完整版下载地址)

本文讲解天工3.1.7安装过程(附Godwork完整版网盘下载地址)。 一、天工3.1.7安装教程 1. 安装GodWork-AT 3.1.7 2. 安装GodWork-AT 3.1.7补丁 3. 安装GodWork-EOS-Setup-2017B-1231 4. 安装GodWork-EOS补丁 5. 运行godwokr软件 6. 生成ZC码 7. 输入ZC码 8. eos插

智慧空间实验室 5285

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JAVA基础、集合

本文总结了Java基础核心知识点,包括语法糖、反射机制、动态代理、异常处理、数据类型、面向对象特性、集合框架等。重点解析了HashMap的底层结构(数组+链表/红黑树)、线程安全实现(JDK1.7分段锁/1.8CAS+synchronized)、扩容机制等细节。同时对比了ArrayList与LinkedList、HashSet与TreeSet的区别,并介绍了集合的线程安全解决方案。文章还涵盖String不可变性原理、多态实现方式、序列化等关键概念,为Java开发者提供了全面的基础知识梳理。

lmh_qwq的博客 510

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java-10集合

文章目录Java-09集合1.Java集合框架概述Collection接口继承树Map接口继承树2.`Collection`接口方法3.`Iterator`迭代器接口3.1 注意3.2 在迭代器中调用其`remove()`方法4.`Collection`子接口一:`List`4.1 初见4.2 方法4.2.1 增4.2.2 删4.2.3 改4.2.4 查4.2.5 其他方法4.2.6 LinkedList1.初见2.方法(上面的方法也都还有,列举一些新加的方法)4.2.7 Vector1. 初见2. 方法(

Jerry&Crj的博客 2359

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

2021大厂Java面试真题(Java 集合 )

2021大厂Java面试真题(Java 集合 ) 1、说说 List, Set, Queue, Map 四者的区别? List(对付顺序的好帮手): 存储的元素是有序的、可重复的。 Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。 Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序 的、可重复的。 Map(用 key 来搜索的专家): 使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x” 代表 key,“y”

ZJC'博客 1166

Golang数组处理终极方案?带你3分钟认识collection集合库,业务开发效率提升3倍

Golang 写业务,绕不开海量数组(Slice)处理:过滤、排序、分组、聚合……原生 Slice 没有这些能力,手写 for 循环又冗长易错。**collection 集合库**正为此而生——它是一个专为 Golang 业务开发打造的 Go 集合处理工具包,用链式调用的方式把数组操作变成"读需求一样的代码",让业务开发效率成倍提升。 ## 为什么 Golang 业务开发需要 collectio

gitblog_00061的博客 1053

【JavaSE学习】05-2常用API(集合)

JavaSE(B站黑马)学习笔记 05-2常用API(集合)

weixin_48074431的博客 1104

2021-06-21 集合

面向对象编程 JDBC Java发展历程 JAVA环境搭建 基础程序设计 Eclipse使用 IDEA 使用 泛型 元注解 装箱/拆箱 枚举 可变参数 Lambda 表达式 Stream API Date/Time API Java新特性 Oracle/MySQL 集合 IO/NIO 类库 多线程 异常处理 反射 网络 应用程序开发 设计模式 接 口 三大特性 类的结构 类/对象 ...

weixin_46721333的博客 176

Java 集合

hash值需要映射到数组上的索引位置,要进行取模操作,也就是。

weixin_58660573的博客 856

JavaSE进阶08:HashSet、Map集合、HashMap、TreeMap、可变参数、不可变集合

系列文章目录 JavaSE进阶01:继承、修饰符 JavaSE进阶02:多态、抽象类、接口 JavaSE进阶03:内部类、Lambda表达式 JavaSE进阶04:API中常用工具类 JavaSE进阶05:包装类、递归、数组的高级操作、异常 JavaSE进阶06:Collection集合、迭代器、List、ArrayList、LinkedList JavaSE进阶07:泛型、Set集合、TreeSet、二叉树、红黑树 Java进阶作业 文章目录系列文章目录1.HashSet集合1.1HashSet集合概述

XXXZhy丶Blog 1222

功能测试_功能性Java集合

功能测试 如今,在功能上大肆宣传,因此至少在Java集合方面,我将简要概述一下其中的功能。 我个人喜欢标准集合API,但在某些情况下可能会很尴尬并添加其他详细信息。 在Java 8+的更高版本中,这应该不是问题。 在那里,我们可能会担心不会创建回调地狱,但嘿,对于大多数内容来说,没有万灵药,为什么要为编程编写一个? 番石榴之路 Guava项目是Google的核心库之一,其中涵盖了许多不同的核心语...

cunfu5234的博客 150

java集合框架小札

ArrayList与LinkedList异同 线程安全 ArrayList和LinkedList都是不同步,不保证线程安全 底层数据结构 Arraylist 底层使用的是Object数组 LinkedList 底层使用的是双向链表数据结构 插入和删除是否受元素位置的影响 ArrayList 采用数组存储(顺序存储),插入和删除时间复杂度受影响 LinkedList 采用链表存储,...

pardon110的博客 143
上一篇: 记一件诡异事件
下一篇: gitLab 使用tortoiseGit 克隆新项目 一直提示tortoiseGitPlink输入密码 输完也不生效
workhd
博客等级 码龄17年 14粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值