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

知识改变命运 数据结构【java对象的比较】

0:前言

在基本数据类型中,我们可以直接使用==号比较是否相等,还记的学堆哪里时候,插入一个数据,就会与其他数据进行比较,当时我们传入的是Integer类型,在Integer类里面已经实现了compare。
在这里插入图片描述
如果我们要传入自定义类型呢?
在这里插入图片描述
我们执行一下:
在这里插入图片描述
在这里插入图片描述
这是因为Student类中没有实现比较的方法。

1:基本数据的比较

基本数据比较直接可以用==及其他比较符号直接比较。

2:引用型数据比较

在这里插入图片描述
我们发现引用类型无法使用> ,<号进行直接比较会报错,为什么== 可以比较呢?因为:对于用户实现自定义类型,都默认继承自Object类,而Object类中提供了equal方法,而==默认情况下调用的就是equal方法,但是该方法的比较规则是:没有比较引用变量引用对象的内容,而是直接比较引用变量的地址,
在这里插入图片描述

2.1比较对象的内容

有时候我们要比较对象的内容,那怎么比较呢,

2.1.1覆写equals

在这里插入图片描述
覆写基类equal的方式虽然可以比较,但缺陷是:equal只能按照相等进行比较,不能按照大于、小于的方式进行比较。

2.1.2基于Comparble接口类的比较

对用用户自定义类型,如果要想按照大小与方式进行比较时:在定义类时,实现Comparble接口即可,然后在类中重写compareTo方法。
在这里插入图片描述

2.2.3 基于比较器比较

用户自定义比较器类,实现Comparator接口
在这里插入图片描述

2.1.4 三种方式对比

覆写的方法说明
Object.equals因为所有类都是继承自 Object 的,所以直接覆写即可,不过只能比较相等与否
Comparable.compareTo需要手动实现接口,侵入性比较强,但一旦实现,每次用该类都有顺序,属于内部顺序
Comparator.compare需要实现一个比较器对象,对待比较类的侵入性弱,但对算法代码实现侵入性强

http://www.mrgr.cn/news/45819.html

相关文章:

  • Kubernetes 深度洞察:StatefulSet 之存储状态探秘
  • 多模态方法总结
  • 车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08
  • 前端开发中的高级技巧与最佳实践
  • [Python学习日记-42] Python 中的生成器
  • 【计算机毕设】springboot-考研资讯平台(附源码)
  • 大数据新视界 --大数据大厂之 Hudi 数据湖框架性能提升:高效处理大数据变更
  • QD1-P1 HTML、CSS与JS三者之间的关系
  • 【linux】进程间的通信(一)
  • Rust语言发展历程
  • JavaScript 变量的简单学习
  • 力扣206.反转链表
  • 栈_1(2024年10月08日)
  • idea2024版本maven依赖刷新规则
  • JUC-synchronized 知多少
  • 【重学 MySQL】六十一、数据完整性与约束的分类
  • 世界职业院校技能大赛(大数据技术与应用)参赛项目介绍内容模拟示例参考
  • C语言— exec系列函数
  • java泛型
  • 【java数据结构】ArrayList实例