【问题标题】:Why String implements Comparable and not Comparator interface [duplicate]为什么 String 实现 Comparable 而不是 Comparator 接口
【发布时间】:2016-08-23 02:09:09
【问题描述】:

这个问题是在一次采访中被问到的。问题是为什么String 和其他包装类实现Comparable 而不是Comparator 接口。我试图解释Comparator基本上是提供自定义排序,Comparable是默认自然排序顺序。同样从设计原理的角度来看,Comparable 是紧耦合的,Comparator 是松耦合的。但是,我无法解释为什么String 实现了Comparable 而不是Comparator

【问题讨论】:

标签: java string comparator comparable


【解决方案1】:

字符串实现Comparable,因为它们是可以比较的东西。一般来说,实现Comparable 的东西往往有一个自然的顺序,就像你提到的那样。

Comparator 是一种比较事物的方式。当你制作一个比较器时,你正在定义一个用来比较事物的方法。您可以在给定类型上创建多个比较器,以不同方式比较事物。

【讨论】:

  • 我在上面提到了一些关于自然排序的事情。是的,但我认为我们可以通过覆盖 compareTo() 方法轻松修改此排序。我的意思是这因实施而异。它并不特定于 Comparable 或 Comparator。 String 是一个可变类,它的实现方式始终为您提供自然顺序排序。
  • 您可以通过重写 compareTo 来修改排序,但是对于每个实现 Comparable 的类,您只能定义一个排序,因为您必须选择一种特定的方式来编写 compareTo。但是,您可以创建多个比较器来比较特定类的对象,每个对象都可以定义不同的顺序。查看其他可比较的与比较器问题以获取更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 2021-09-18
  • 2012-12-03
  • 2017-12-26
相关资源
最近更新 更多