Comparable 与 Comparator:差异与比较

Comparable 和 comparator 都是 Java 的接口,Java 是一种用于对集合元素进行排序的高级编程语言。 Java 基本上提供了这两个不同的接口来对对象进行排序。

两个界面之间存在许多显着差异,这些差异根据它们执行的功能在两者之间建立了界限。

关键精华

  1. Comparable 是一个用于对象自然排序的接口; Comparator 是用于比较对象的外部实用程序。
  2. 实现 Comparable 需要修改被比较对象的类; 可以在不修改原始类的情况下使用 Comparator。
  3. Comparable 强加了一个单一的、默认的排序方法; Comparator 允许多个可自定义的排序选项。

可比较与比较器

Comparable是Java中的一个接口,它定义了compareTo方法,用于比较自然排序的对象。 它使用“this”引用来比较对象。 比较器接口通过考虑对象的属性来对对象进行排序。 它考虑两个不同类的对象。

可比较与比较器

Comparable是Java语言的lang包中存在的一个接口,其目的是仅使用单个属性(例如年龄、价格、id、名称等)对集合元素进行排序。

它能够将自己与任何其他对象进行比较。 任何类型的对象,无论是列表还是数组,都可以进行排序。

Comparator是Java语言的util包中存在的一个接口,其目的是一次使用多个属性对集合元素进行排序。

它是一个单独的类,并且在所比较的元素类型之外。 collections 类提供了第二种排序方法,它接受一个比较器作为参数。

对比表

比较参数可比比较
分拣类型它提供了一个单一的排序顺序。它提供了多种排序顺序。
类修改它修改了实际的类。它不会修改实际的类。
包装位置它存在于 java—lang 包中。它存在于 java 中。 工具包。
方法它有 compareTo() 方法。它有 compare() 方法。
排序方法Collections.sort(List) 方法。Collections.sort(List,Comparator) 方法。

什么是可比?

如上所述,Comparable 是 Java 编程语言的一个接口,它存在于 lang 包中,用于仅使用一个属性对集合元素进行排序。 可比较接口仅包含一个方法,即compareTo()。

另请参阅:  WeVideo vs Filmora:差异与比较

可比较的对象能够与其他对象进行比较。 为了使类能够比较实例,该类必须实现 Comparable 接口。

为具有自然顺序的对象开发了一个可比较的接口。 换句话说,这意味着要排序的对象必须具有要排序的顺序。

从逻辑上讲,可比较接口将“this”引用与方法中提到的对象进行比较。 当任何类实现Comparable接口时,该类的对象可以使用Collections进行排序。 sort() 或数组。 sort() 方法。

对象将自动按照 CompareTo 方法定义的自然顺序进行排序。 可以比较数字、字符串和许多其他类型。 可以使用字母比较来比较字符串。

Java 的各种内置类都实现了类似的接口。 最重要的是要记住,可比较接口只能用于比较同一类的对象。

可比

什么是比较器?

Java 编程语言的比较器接口存在于 util 包中,用于同时根据多个属性对集合进行排序。

比较器是一个完全独立的类。 程序员使用创建多个实现比较器接口的类来比较不同的对象。

要比较任何集合对象,第一步是创建一个实现比较器方法的类,其中包含 compare() 方法。 接下来的步骤是创建一个实现比较器接口的类的实例。

最后一步是调用重载方法,即 sort() 方法,然后分配列表和上一步中创建的类的实例。

比较器接口比较不同类的两个对象。 Comparator接口里面有两个方法,分别是compare()方法和equals()方法。

另请参阅:  LinkedIn 与 Instagram:差异与比较

compare() 方法将两个不同的对象作为参数进行比较,equals() 方法判断对象是否被 通过 等于调用比较器。

equals() 方法返回一个布尔值作为其输出。 当对象通过并且调用对象都是比较器时返回 True,如果不是,则返回 false。

Compare() 方法在其输出中返回一个整数值,指示两个传递的对象中较大的一个。

比较

Comparable 和 Comparator 之间的主要区别

  1. Comparable 接口提供单一排序 序列 其中集合可以通过单个元素(如 id、名称或任何特定参数)进行排序,而比较器接口提供了多个排序序列,其中集合可以通过多个元素(如 id、名称或任何其他参数)进行排序.
  2. 可比较接口会影响原始类,因为它修改了实际类,而另一方面,比较器接口不会以任何方式影响原始类,因为实际类保持不变,没有任何修改。
  3. 比较接口存在于Java的lang包中,而比较器接口存在于Java的util包中。
  4. 在可比较接口中,compareTo() 方法用于对元素进行排序,而在比较器接口中,compare() 方法用于对元素进行排序。
  5. 可以使用 Collections 对集合的可比较类型列表元素进行排序。 Sort (List) 方法,而另一方面,可以使用 Collections.sort 对集合的比较器类型列表元素进行排序。 排序(列表,比较器)方法。
X和Y的区别 2023 05 06T084306.029
参考资料
  1. https://dom-pubs.onlinelibrary.wiley.com/doi/abs/10.1111/j.1463-1326.2011.01545.x
  2. https://journals.asm.org/doi/abs/10.1128/aac.47.6.1824-1831.2003
  3. https://ieeexplore.ieee.org/abstract/document/6042862/

最后更新时间:17 年 2023 月 XNUMX 日

点1
一个请求?

我付出了很多努力来写这篇博文,为您提供价值。 如果您考虑在社交媒体上或与您的朋友/家人分享,这对我很有帮助。 分享是♥️

关于“可比较与比较:差异与比较”的 5 个思考

  1. 您指出的 Comparable 和 Comparator 接口之间的关键区别非常有用,有助于理解两者之间的区别。您对 Comparable 接口如何按照compareTo 方法定义的自然顺序自动对对象进行排序的解释特别有启发性。

    回复
    • 我同意,本文对 Comparable 和 Comparator 接口进行了清晰简洁的比较,使您更容易理解它们独特的功能和用例。

      回复
  2. Comparable 和 Comparator 接口的细分及其独特的功能非常有教育意义。您对这些接口的目的和用法的全面解释无疑将帮助开发人员做出明智的设计决策。

    回复
    • 我很欣赏这里提供的详细比较。对于希望增强对 Java 排序和比较技术的理解的开发人员来说,这是很有价值的信息。

      回复

发表评论

想保存这篇文章以备后用? 点击右下角的心形收藏到你自己的文章箱!