可比与比较器:可比与比较器之间的区别
已发表: 2020-12-30目录
可比和比较器:概述
Comparable 和comparator 都是Java 编程语言中的接口,用于确定实现类的行为。 虽然 Comparable 用于自然排序的对象,但 Comparator 接口通过考虑对象的属性来实现排序。 此外,Comparator 排序考虑了两个不同类的对象,而 Comparable 使用“this”引用比较对象。
现在,我们已经建立了两个接口工作的基本原理,让我们看看两者之间的区别。
可比和比较器之间的区别
排序方法
可比
它使用 compareTo() 函数进行排序。 这是 Comparable 排序界面中存在的唯一方法。
compareTo(Object O) 将一个对象作为参数并将其与另一个相同类型的对象进行比较。 如果一个对象是一个字符串,你只能将它与另一个相同类型的对象进行比较。 int 对象等情况也是如此。 compareTo() 根据排序结果返回一个负数、正数或零整数值。
比较器
Comparator 中有两种方法可以对元素进行排序:compare() 和 equals()。
compare(Object O1, Object O2) 考虑两个参数作为输入并提供所需的输出。 它返回一个整数来指示第一个参数与第二个参数的比较。

- 如果 O1 小于 O2,则返回一个负整数。
- 如果 O1 大于 O2,它将返回一个正整数。
- 如果 O1 等于 O2,则返回 0。
equals(Object) 考虑一个对象作为输入并将其与比较器进行比较。 如果 Object 等于 Comparator,则返回 True。 它还确保订单不会改变。
使用的包装
可比
它存在于 Java 的 java.lang 包中。
比较器
它存在于 Java 的 java.util 包中。

排序和分类
可比
- 它考虑了遵循自然排序的对象,即倾向于自行排序。 例如,姓名、价格、工资、卷号、年龄等的字母顺序或数字顺序。
- 两个对象属于同一类也很重要。
- Comparable 接口将“this”引用与指定的对象进行比较。
- 使用 Comparable 排序会影响实际的类。
比较器
- 该接口主要用于对指定对象的属性进行排序。 它们不需要具有自然顺序; 它可以定制。
- 排序的逻辑需要在不同的类中比较考虑的两个类的对象的属性。
- 实际类不受影响。
序列和集合
可比
- 它仅支持单个排序序列。 这意味着您只能考虑集合的一个元素或属性,例如卷号或年龄或等级。
- 要对对象、数组或列表的集合进行排序,您可以使用 Collection。 排序(列表)或数组。 排序(列表)。 这将使对象按其自然顺序排列。
比较器
- 它支持多种排序顺序。 这意味着您可以考虑集合的多个元素或属性,例如卷号、年龄和排名。
- 您可以使用 collection.sort(list, compare) 对集合进行排序。
这是 Comparable 和 Comparator 之间所有差异的摘要

可比 | 比较器 |
包裹 | |
Java语言 | Java.util |
排序方法 | |
相比于() | 比较() |
订购 | |
自然排序 | 定制订购 |
对象类型 | |
比较的对象必须是同一类型 | 考虑不同类的对象 |
对班级的影响 | |
类被修改 | 不影响上课 |
排序顺序 | |
单一排序顺序 | 多重排序顺序 |
报名参加世界顶尖大学的软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
在 Java 中使用 Comparable 和 Comparator 时要记住的事情
- 如果您要销售以执行特定类的标准比较,可比较接口是选择的接口。
- 比较器允许使用 lambda。
- 您可以使用 compareTo() 方法来实现 Comparator 和 Comparable。
- 如果您正在寻求排序的灵活性,建议使用比较器接口
结论
在大多数现实生活场景中,当我们进行排序时,我们通常会考虑各种参数。 此外,由于在默认排序中使用可比较的结果并且不能动态更改,因此它不如 Comparator 实用,它允许您自定义和选择不同的排序方法以满足您的要求。 仅出于这个原因,Comparator 发现了比 Comparable 更多的实际应用。
阅读:一些有趣的 Java 项目要查看
如果您有兴趣了解有关 Java、全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训,9 个以上的项目,和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
什么是编程语言中的接口?
学习Java容易吗?
Java 引入了面向对象的编程范式,即使是最缺乏经验的 Java 开发人员也可以像经验丰富的开发人员一样思考和创建程序。 Java 起源于当今也广泛使用的 C 和 C++ 编程语言。 虽然 Java 在功能方面与 C 和 C++ 有一些相似之处,但它已经发展成为一种对用户更加友好的语言。 因为面向对象的编程使得维护和更改现有代码变得简单,所以即使是新手程序员也可能开始从事公司项目。 新开发人员不太可能遇到无法预料的运行时错误,因为在执行 Java 之前会验证错误。 Java 迫使程序员正确指定所有代码元素,从而随着应用程序的增长减少出错的机会。
为什么在 Java 中需要排序?
排序是指一组技术,用于重新排列数组中元素的位置,使它们都按升序或降序排列。 一个体面的排序算法还必须确保具有相同值的元素以相同的顺序保留在已排序的数组中。 排序是深入理解数据结构和算法所必需的。 Java 作为一种编程语言非常通用,可用于实现多种排序算法。 这些算法中的大多数都非常通用,可以以递归和迭代方式实现。