使用java.lang.Comparable实现比较器和使用java.util.Collections排序

这篇具有很好参考价值的文章主要介绍了使用java.lang.Comparable实现比较器和使用java.util.Collections排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录:469

场景:使用java.lang.Comparable实现比较器,使用java.util.Collections排序,实现找出最大值。

版本:JDK 1.8,Spring Boot 2.6.3,fastjson-2.0.33。

1.一个JSON字符串,找出最大值

1.1JSON字符串

[
  {
    "testTime": "2023-06-29 03:23:12",
    "testValue": 0.9687
  },
  {
    "testTime": "2023-07-05 12:15:11",
    "testValue": 0.5267
  },
  {
    "testTime": "2023-03-27 08:03:16",
    "testValue": 0.9812
  },
  {
    "testTime": "2023-05-13 18:19:52",
    "testValue": 0.8613
  },
  {
    "testTime": "2023-11-20 22:19:05",
    "testValue": 0.6582
  }
]

1.2解析

把JSON字符串转换是JSONArray类型,把值取出转换为独立对象,再做比较。

2.使用java.lang.Comparable实现比较器

public class CheckResultDto implements Comparable<CheckResultDto> {
  private String testTime;
  private BigDecimal testValue;
  public CheckResultDto(String testTime, BigDecimal testValue) {
      super();
      this.testTime = testTime;
      this.testValue = testValue;
  }
  @Override
  public int compareTo(CheckResultDto o) {
      int result = 0;
      //按照结果值降序排序
      result = -this.testValue.compareTo(o.testValue);
      return result;
  }
  public String getTestTime() {
      return testTime;
  }
  public void setTestTime(String testTime) {
      this.testTime = testTime;
  }
  public BigDecimal getTestValue() {
      return testValue;
  }
  public void setTestValue(BigDecimal testValue) {
      this.testValue = testValue;
  }
}

3.使用java.util.Collections排序取出最大值

3.1代码

public static void main(String[] args) {
  //1.Json字符串转换为List<CheckResultDto>
  List<CheckResultDto> list=JSONArray.parseArray(getResultData(),CheckResultDto.class);
  //2.使用Collections排序List
  Collections.sort(list);
  //3.获取最大值
  CheckResultDto maxResult = list.get(0);
  //4.打印最大值
  System.out.println(JSON.toJSONString(maxResult));
}

3.2解析

(1)使用com.alibaba.fastjson.JSONArray把JSON字符串转换为List<CheckResultDto>。

(2)使用java.util.Collections排序排序后,最大值就在List第一个位置。

4.测试结果

{"testTime":"2023-03-27 08:03:16","testValue":0.9812}

5.辅助方法

示例中getResultData()取出JSON字符串。

public static String getResultData() {
  String result = "[\n" +
    "  {\n" +
    "    \"testTime\": \"2023-06-29 03:23:12\",\n" +
    "    \"testValue\": 0.9687\n" +
    "  },\n" +
    "  {\n" +
    "    \"testTime\": \"2023-07-05 12:15:11\",\n" +
    "    \"testValue\": 0.5267\n" +
    "  },\n" +
    "  {\n" +
    "    \"testTime\": \"2023-03-27 08:03:16\",\n" +
    "    \"testValue\": 0.9812\n" +
    "  },\n" +
    "  {\n" +
    "    \"testTime\": \"2023-05-13 18:19:52\",\n" +
    "    \"testValue\": 0.8613\n" +
    "  },\n" +
    "  {\n" +
    "    \"testTime\": \"2023-11-20 22:19:05\",\n" +
    "    \"testValue\": 0.6582\n" +
    "  }\n" +
    "]";
  return result;
}

以上,感谢。

2023年7月26日文章来源地址https://www.toymoban.com/news/detail-609529.html

到了这里,关于使用java.lang.Comparable实现比较器和使用java.util.Collections排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java比较器(Comparator接口)

    1.当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序 2.重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返回正整数,则表示o1大于o2;如果返回

    2024年02月15日
    浏览(33)
  • Java中的比较器(Comparator)

    Java中的比较器(Comparator)是一种对象,用于定义两个对象之间的比较规则。它是一个独立的类,实现了Comparator接口,通常用于对集合中的元素进行排序。Comparator接口中有一个compare()方法,它接受两个对象作为参数,并返回一个int值,表示它们的顺序。 下面是一个简单的例

    2024年02月11日
    浏览(30)
  • Java入门8(Comparator比较器,HashMap)

    ​Comparator不同于Comparable,使用更加的灵活,可以在不同场景下使用比较器,实际开发中,更推荐comparator比较器 Set接口常用实现类 三个常用实现类:TreeSet(基于Java红黑树,底层map),HashSet(哈希表,底层map),LinkedHashSet() Set特点: 不允许存储重复元素 没有索引,不能

    2024年02月04日
    浏览(30)
  • VHDL5:VHDL实现比较器并仿真

    目录 1. 示例说明 2. VHDL源码 3. 运行结果 4. 功能仿真结果 本例是一个比较器,用于比较两个位串所代表的整数的大小。 该比较器有2个输入端口: in1和in2           1个输出端口: pout 其中输入端口和输出端口in1、in2、pout的类型为位向量; 如果in1小于in2,则pout输出为\\\'1\\\',否则输

    2024年02月02日
    浏览(23)
  • XL6601系列ACMP模拟比较器使用

    目录 模拟比较器(ACMP) 简介特性 实现 结构框图 Demo 官方解释 功能说明 正输入与负输入 输出 输出标志 中断 设置与操作 实现一个简单的小功能,掉电检测,使用到了ACMP外设,认为学习东西后总得产出点什么,所以在此简单记录一下。 模拟比较器模块(ACMP)提供一个用于比

    2024年02月01日
    浏览(29)
  • 【TreeSet集合】比较器排序Comparator的使用

    存储学生对象并遍历,创建TreeSet集合使用带参构造方法 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序 创建学生类: 测试类: 使用比较器进行排序在创建TreeSet集合时要传递Comparator的实现类对象,重写compare()方法,根据返回值进行排序。在compare方法

    2024年02月08日
    浏览(31)
  • 高速SAR ADC 关键技术研究和实现(二):动态比较器

    电压比较器的作用是实现逐次逼近过程中的比较作用,从而实现电容阵列DAC的电压切换,在李福乐老师的ppt中已经给出了传统动态比较器的基本结构,如下图所示: 该比较器由预放大级和锁存器构成,之所以叫做动态比较器是因为上面附加了时钟信号,当复位阶段即CLK置低电

    2024年02月13日
    浏览(29)
  • C#使用自定义的比较器对版本号(编码)字符串进行排序

    给定一些数据,如下所示: “1.10.1.1.1.2”, “1.1”, “2.2”, “1.1.1.1”, “1.1.3.1”, “1.1.1”, “2.10.1.1.1”, “1.1.2.1”, “1.2.1.1”, “2.5.1.1”, “1.10.1.1”, “1.10.2.1”, “1.11.3.1”, “1.11.12.1”, “1.11.11.1”, “1.11.3.1”, “1”, “1.1.1.1.1”, “1.1.1.1.1.1” 实现效果: 按照每个节点层

    2024年02月11日
    浏览(32)
  • 剑指 Offer 45. !!把数组排成最小的数(使用比较器的定制排序;快速排序)

    剑指 Offer 45. 把数组排成最小的数 中等 662 相关企业 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 这道题在左程云算法课上讲过,但是这次

    2024年02月14日
    浏览(29)
  • 【STM32】STM32G4系列片内模拟器件-比较器的使用

    STM32G4系列内置了片内模拟比较器,为电机控制、电源监测等方面的应用提供了很大的便利。要使用片内比较器,只需使用STM32CubeMX进行简单配置即可。 首先,在CubeMX中打开比较器的接口,这里展示了比较器1的输入输出端口。 在比较器配置界面中设置好正负输入端口,其中负

    2024年02月08日
    浏览(147)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包