当前位置: 首页 > news >正文

Java学习打卡-Day20-Comparable接口与Comparator接口

学习自Code哈哈笑、拭心

Comparable接口与Comparator接口

Comparable 自然排序

  • Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。它属于对象本身的一部分,定义了对象之间的默认比较逻辑
  • Comparable 在 java.lang 包下,内部只有一个方法 compareTo()
  • 可以让实现它的类的对象进行比较,通过 Collections.sort() 或 Arrays.sort() 方法进行排序。具体的比较规则是按照 compareTo 方法进行。
  • 通过e1.compareTo(e2) 来比较e1和e2的大小。若返回负数,意味着e1<e2。
  • 注意:
    1. 由于 null 不是一个类,也不是一个对象,因此在重写 compareTo 方法时应该注意 e.compareTo(null) 的情况,即使 e.equals(null) 返回 false,compareTo 方法也应该主动抛出一个空指针异常 NullPointerException。
    2. Comparable 实现类重写 compareTo 方法时一般要求 e1.compareTo(e2) == 0 的结果要和 e1.equals(e2) 一致。这样将来使用 SortedSet 等根据类的自然排序进行排序的集合容器时可以保证保存的数据的顺序和想象中一致。

Comparator 定制排序

  • Comparator 是比较器接口,用于自定义排序。它是一个独立的比较器,与对象本身的定义无关。
  • 我们若需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么,我们可以建立一个“该类的比较器”来进行排序。这个“比较器”只需要实现Comparator接口即可。
  • 当需要对同一类的对象应用多种排序规则时,Comparator 更加灵活。
  • Comparator 的对象可以作为排序策略参数传递给 Collections.sort() 或 Arrays.sort() 方法,或一些内部有序的集合( SortedSet,SortedMap 等)。
  • Comparator 在 java.util 包下,JDK8以前只有compare()equals()两个方法。
  • 通过compare(T e1, T e2) 来比较e1和e2的大小。若返回负数,意味着e1<e2。

Comparable 与Comparator 对比

Comparable 与Comparator 对比

相关文章:

  • java基础自用笔记:异常、泛型、集合框架(List、Set、Map)、Stream流
  • 【Golang】补充:占位符、转义字符、错误处理
  • linux中防火墙的配置
  • deploy myEclipse j2ee project to server没反应
  • OpenHarmony子系统开发 - init启动引导组件(三)
  • 56.fm解调最简单的方法过零检测,如何确定计时器的更新速率
  • 批归一化(Batch Normalization)与层归一化(Layer Normalization)的区别与联系
  • 云原生时代的智能流量治理体系设计与实践
  • 【C语言】文件操作(详解)
  • CmDust日志分析工具简单介绍
  • 大模型推理--temperature、top_k、top_p理解
  • 未授权访问
  • neo4j知识图谱常用命令
  • 在Java中使用JDK8创建SpringBoot项目时无法选择Java8
  • es6 fetch
  • Flutter快速搭建聊天
  • eNSP中华为S5700交换机基础配置命令
  • Android Compose 框架物理动画之弹簧动画(Spring、SpringSpec)深入剖析(二十七)
  • SEO长尾关键词精准布局策略
  • JAVA多线程
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 媒体:中国女排前队长朱婷妹妹被保送浙大受质疑,多方回应
  • 女子七年后才知银行卡被盗刷18万元,警方抓获其前男友
  • 昆明公布3起经济犯罪案例:一人持有820余万假美元被判刑十年
  • 国税总局上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 国家卫生健康委通报关于肖某引发舆情事件调查处置进展情况