【问题标题】:Comparable in custom sorting instead of Comparator在自定义排序中可比较而不是 Comparator
【发布时间】:2018-02-26 06:10:43
【问题描述】:

当我在 Java 中搜索 Comparable 和 Comparator 接口之间的区别时,大多数时候我得到的答案是 Comparator 可以用于自定义排序。您能回答以下问题吗? 1) 为什么我们不能在自定义排序中使用 Comparable 而不是 Comparator? (最后两者都有比较后返回 int 的方法。)

注意:请坚持这个问题。我不是在寻找这两个接口的定义。

【问题讨论】:

  • 快速:给我写一个包含三个字段的类,firstNamelastNamebirthDate。现在,将其设为Comparable(使用lastName)。最后,如何制作一个也可以按firstNamebirthDate排序的程序?
  • 你只能在给定的类上实现一次Comparable

标签: java sorting java-8


【解决方案1】:

Comparable 是要被排序的类实现的接口。为简单起见,您只能使用该界面以一种方式比较实例。

您可以为单个类实现多个比较器。例如,如果您与人打交道,可以根据出生日期、姓名等进行比较。

【讨论】:

    【解决方案2】:

    ComparableComparator 都可以用于自定义排序,但它们的用法存在一些差异。

    • Comparable接口可用于提供一种排序方式 而Comparator接口可用于提供多种方式 排序。

    • 对于使用Comparable,类需要实现它,而对于使用Comparator,我们不需要对类进行任何更改。

    • 对于使用Comparable,我们不需要在客户端进行任何代码更改。 Arrays.sort() 或 Collections.sort() 方法自动使用类的 compareTo() 方法。 但是,要使用Comparator,客户端需要提供Comparator 类,以便在 compare() 方法中使用。

    所以根据以上需求你可以选择Comparable接口或者Comparator接口

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 2021-03-23
      • 2021-09-18
      • 2011-05-10
      • 1970-01-01
      相关资源
      最近更新 更多