对象值相等的比较
“==”和equals
p == q 表示的是 p 和 q 两个引用指向同一个对象
p.equals(q) 表示 p 指向的对象 和 q 指向的 对象是否是值语义相等的

equals如果没有手动重写,默认执行的就是Object版本中的equals。比较规则和“==”一样

结果

手动重写equals

运行结果

有了下面这个条件,则可以使
String str = null;
“hehe”.equals(str)不会出现空指针异常

大于、等于、小于的比较


使用Comparable接口的时候,最好指定泛型参数。编译器自动的完成类型效验工作,如果不写泛型参数,默认的comparaTo方法的参数类型就是Object类型。需要手动进行类型转换
对compareTo进行重写
使用Comparable的时候,你必须让要比较的类实现Comparable接口(需要修改这个类的代码)


结果

Comparator的使用
使用Comparator的时候,你是重新创建一个新的类实现Comparator接口,不需要修改待比较的代码


结果

equals 和 Comparable 是两个互不相干的东西

Comparable 与 Comparator 比较
使用Comparable的时候,你必须让要比较的类实现Comparable接口(需要修改这个类的代码)

直接让Card这个类实现Comparable接口

使用Comparator的时候,你是重新创建一个新的类实现Comparator接口,不需要修改待比较的代码

重新写了一个类,他的泛型参数是Card

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

比较(==、equals、Comparable、Comparator)相关推荐

  1. Comparable Comparator的区别

    Comparable & Comparator接口都可以用来实现集合中元素的比较.排序,Comparator位于包java.util下, Comparable位于包java.lang下 Com ...

  2. Comparable+Comparator+Cloneable接口

    文章目录 Comparable Comparator Cloneable 浅拷贝 深拷贝 Comparable 当我们需要对一个自己写的类进行排序(Collections.sort和Arrays.so ...

  3. java常用类库---比较器(Comparable,Comparator)

    一,本章目标 掌握Comparable比较接口的使用 了解比较器的基本排序原理 掌握Comparator比较接口的使用 二,具体内容 Comparable接口: 之前在Arrays中存在sort方法, ...

  4. comparable, comparator

    阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...

  5. java comparable Comparator 区别

    Comparable与Comparator 都是用来实现集合中的排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序, ...

  6. JAVA两类比较器的区别(Comparable,Comparator)

    内部比较器Comparable 一个类实现了Comparable接口,那么它就有了一个内部比较器,实现了Comparable的类可以调用Collections工具类或Arrays的sort方法进行比较 ...

  7. Comparable Comparator

    Comparable与Comparator浅析_朱小厮的博客-CSDN博客_comparator与comparable Java 中 Comparable 和 Comparator 比较 - 如果天空 ...

  8. Comparable与Comparator的区别

    原文出处: MageShuai Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Compar ...

  9. java的Comparator和Comparable

    java的Comparator和Comparable 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序.      ...

  10. Comparable和Comparator接口是干什么的?列出它们的区别。

    ava提供了只包含一个compareTo()方法的Comparable接口.这个方法可以个给两个对象排序.具体来说,它返回负数,0,正数来表明已经存在的对象小于,等于,大于输入对象. Java提供了包 ...

最新文章

  1. 如何发现优秀的IT开发人员
  2. 多线程同步之 WaitableTimer (等待定时器对象)[续三]
  3. python中的format什么意思中文-python里format什么意思
  4. 在shell中变量的赋值有五种方法
  5. 001_jQuery简介
  6. 【收藏】K8S部署minio对象存储
  7. CodeForces - 1213E Two Small Strings(暴力+构造)
  8. python导入csv报错_Python Pandas read_csv报错
  9. 有奖征文 | 蒋涛邀你悦评《UNIX传奇》新书,赢技术进阶好礼
  10. 使用 IntraWeb (26) - 基本控件之 TIWMenu
  11. Android中如何查看内存(下)
  12. Apache Flink 进阶(五):数据类型和序列化
  13. 实验一:端口扫描(X-scan)
  14. 【网络技术题库梳理11】第三道大题——DHCP报文
  15. android打开手机自带浏览器,【Appium】打开手机自带的浏览器
  16. php 如何添加备案号,wordpress如何添加备案信息
  17. 数据挖掘背景知识2——数据挖掘可以做到什么 带给我们什么?
  18. HTML——表单标签<form>与表单的实现
  19. 多分类中accuary与micro F1-score的恒等性
  20. css3 滤镜效果(黑白滤镜、模糊化处理等)

热门文章

  1. word2010中奇偶页不同页眉页脚设置
  2. Linux:ls命令
  3. Flink 教程 gitbook 从入门到入土(详细教程)
  4. LeetCode每日一题:744. 寻找比目标字母大的最小字母
  5. [附源码]Python计算机毕业设计SSM基于框架的报修系统(程序+LW)
  6. (C++)将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法
  7. 生成webservice客户端以及解决SSL异常
  8. 微信小程序:强大工具箱组合源码
  9. vue 获取当前路由的title_使用vue-router为每个路由配置各自的title
  10. SSM毕设项目计算机设计大赛优秀作品展示网站8c96d(java+VUE+Mybatis+Maven+Mysql)