long转int类型转换问题

在业务代码中排序时需要根据日期排序,写了如下代码

sorted((o1, o2) -> {String str1 = null;String str2 = null;try {Field field = getField(fieldMap, configBO.getCodeName());str1 = String.valueOf(field.get(o1));str2 = String.valueOf(field.get(o2));} catch (Exception e) {log.error("getDeclaredField error configBO.getCodeName(){}", configBO.getCodeName(), e);}int order = new BigDecimal(StringUtils.isEmpty(str2)||"null".equals(str2) ? "0" : str2).compareTo(new BigDecimal(StringUtils.isEmpty(str1)||"null".equals(str1) ? "0" : str1));if (order == 0) {long time1 = DateUtil.getDateByStr(o1.getRecordDate(), DateUtil.yyyy_MM_dd).getTime();long time2 = DateUtil.getDateByStr(o2.getRecordDate(), DateUtil.yyyy_MM_dd).getTime();order = (int) (time1 - time2);}return order;})

在日期排序时使用了getTime 来获取时间戳,然后时间戳相减后转为int作为order,这里会有类型转换问题,即下图:

两者相减的数据大于了int最大值,导致本应该是正数的一个值,int转换后是一个负数,导致排序混乱

修改也简单,把根据时间戳排序改为根据date自带的compareTo排序即可

 order = DateUtil.getDateByStr(o1.getRecordDate(), DateUtil.yyyy_MM_dd).compareTo(DateUtil.getDateByStr(o2.getRecordDate(), DateUtil.yyyy_MM_dd));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt开发流程】之对象模型1:信号和槽

Qt对象模型 标准c对象模型为对象范型提供了非常有效的运行时支持。但是它的静态特性在某些问题领域是不灵活的。图形用户界面编程是一个既需要运行时效率又需要高度灵活性的领域。Qt通过结合c的速度和Qt对象模型的灵活性提供了这一点。 Qt将这些特性添加到c中: 一个非常强大的…

基于Go语言实现简易Web应用

目录 前言Go语言特点写在使用Go语言实现Web应用前面创建Web服务器声明一个结构体操作加入中间件的使用使用静态文件服务器最后 前言 在编程语言中,近几年问世的几个新语言都是非常不错的,比如Go、Python、 Rust等等。其中,Go语言(Golang)作…

CookieSession Redis 到JWT会话管理历史

单应用时期,通常使用 Cookies 和 Session 进行会话管理。 用户登录后,服务器创建一个唯一的会话标识符(Session ID),将其存储在浏览器的 Cookies 中,并在服务端维护一个关联该标识符的会话对象。 这种方…

基因名潘多拉

同一基因可能会有多种命名,如Ensembl gene ID、NCBI Entrez gene ID、Gene Symbol等 基因有哪些名儿,你知道嘛? Ensembl gene ID:Ensembl数据库中对基因的命名,如ENSMUSG00000000538。ENS是固定字符,表示…

全国停车位收费标准接口API

1) 请求地址 接口地址https://psbg.jparking.cn/cw-gateway/cwzg/v1/near_park 2) 调用方式:HTTP post 3) 接口描述: 数据来源捷停车 不可用于商用 概不负责 4) 请求参数: {"latitude": "29.563009", //坐标"longitude&quo…

基于SSM的零食销售系统

基于SSM的零食销售系统 零食商城系统是一个面向用户销售零食的在线平台,用户可以在该平台上浏览、搜索、选择和购买各种零食产品。零食商城系统的背景是随着生活水平的提高和消费观念的改变,人们对于各种健康、美味和方便的零食产品的需求不断增加。传统…

Verilog基础:编译指令`timescale

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 timescale编译指令用于指定指令后模块的时间单位和时间精度。时间单位是时间值的度量单位,例如延迟值和仿真时间;而仿真精度决定了最小可分…

【独家OD2023C卷真题】20天拿下华为OD笔试2023C-小明能到达的最大坐标值【欧弟算法】全网注释最详细分类最全的华为OD真题题解

题目描述与示例 题目描述 小明在玩一个游戏,游戏规则如下:在游戏开始前,小明站在坐标轴原点处(坐标值为 0)给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指定的要求前进或者后退指…

集成测试如何做?

今天学习下如何进行集成测试。 什么是集成测试? 集成测试被定义为一种测试类型,其中软件模块在逻辑上集成并作为一个组进行测试。一个典型的软件项目由多个软件模块组成,由不同的程序员编码。此级别测试的目的是在集成这些软件模块时,暴露…

C语言还会存在多久

一、C语言的生命力 在当前的科技发展和就业市场需求下,可以肯定地说C语言并没有像一些新兴语言(如Python、JavaScript等)那样受到大量的关注。然而,并不意味着学习C语言的人会越来越少。 首先,C语言作为一种深受尊重…

全网最新最全的Appium自动化:Appium常用操作之H5页面操作 --待补充!

手机chrome浏览器操作: 手机端chrome浏览器一般用于打开H5手机版网站,它的操作方式与PC端的浏览器操作(即selenium对浏览器的操作)是一模一样的,由于切换后的WebView页面也属于网页 下述的方法中部分支持在webview页面…

什么是JVM的内存模型?详细阐述Java中局部变量、常量、类名等信息在JVM中的存储位置

导航: 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 目录 一、JVM基本介绍 二、JVM内存模型 2.0 概述 2.1 类加载子系统 2.2 运行时数据区 2.2.0 基本…

python中的输入输出

文章目录 输入函数input()例子1.如何输入获得两个字符串?(若输入abc def或abc,def)2.如何输入获得两个整数?(若输入34,567)3.如何输入后获得一个元素均为数值型的列表?(若输入12,3.4,567或[12,3.4,567]) 输出输出函数print()pr…

从无人驾驶汽车到虚拟助手:人工智能如何改变我们的世界

人工智能对我们的生活影响有多大 近年来,人工智能迅速发展,成为影响社会各个领域的重要技术。本文将深入探讨人工智能在无人驾驶汽车、虚拟助手等领域的应用和影响,剖析人工智能对我们的生活、工作和社交等方面所带来的深刻变革。 目录 人…

【上海大学《面向对象程序设计A》课程小项目报告】抽象向量类模板及其派生类

1 项目内容及要求 本项目通过设计一个抽象向量类模板,以及一个通用的向量类模板和一个字符串类作为其派生类,以满足各种应用场景中的数据存储和处理需求。 项目内容: 抽象向量类模板。派生向量类。派生字符串类。测试及异常处理。联合测试…

如何计算光伏电站的发电量?

光伏电站的发电量是衡量其性能和经济效益的关键指标。准确地预测和计算光伏电站的发电量对于投资决策、系统设计和优化至关重要。以下是一些计算光伏电站发电量的主要步骤和方法: 1、确定光伏电站的规模和配置 了解光伏电站的组件数量、类型、功率等级以及安装位置…

html和css写QQ会员页面导航

目录 1、css代码 2、html代码 效果图 1、css代码 <style>* {padding: 0;margin: 0;list-style: none;text-decoration: none;}div {margin: 30px auto;}li {float: left;height: 60px;background-color: rgb(102, 102, 102);line-height: 40px;}img {height: 100%;ma…

【LeetCode 0125】【双指针】有效回文

题目 https://leetcode.com/problems/valid-palindrome/ 题解 双指针&#xff1a;左指针右移过程时跳过非法字符&#xff0c;右指针左移时跳过非法字符。 如果左指针大于等于右指针&#xff0c;表示有效回文&#xff1b;如果两指针所对应的字符如果不等&#xff0c;则不是有…

Vellum —— 相关特点

目录 Cloth Breaking and tearing Paneling and draping Cloth simulation Calculating mass and thickness Working with low res and high res cloth Quick moving cloth Softbody Vellum softbodies Plasticity with softbodies Constraints Stitch and slid…

Java集合常见问题

目录 Java集合 1.前言2.集合3.Collection接口类3.1 List接口3.1.1 ArrayList&#xff08;常用&#xff09;3.1.2 LinkedList&#xff08;常用&#xff09;3.1.3 Vector&#xff08;不常用&#xff09; 3.2 Set接口3.2.1 HashSet&#xff08;常用&#xff09;3.2.2 LinkedHash…