为什么我们在每种情况下都不能使用?

时间:2014-09-12 04:47:09

标签: java comparator comparable

可能重复

When should a class be Comparable and/or Comparator?

我理解此链接中给出的差异。
而且在我所指的那本书中,当我们需要在多个字段的基础上对对象进行排序时,我们不能使用可比较的。

我的问题:

我只是想要一个我们不可能使用可比较的例子,并且必须使用比较器才能进行比较,并且还要表明为什么我们不能在两个不同的对象领域进行比较。 如果你发现这个问题是重复的请提供链接,我已经搜索了很多问题,但没有一个我想要的例子。

3 个答案:

答案 0 :(得分:1)

如果一个类实现了Comparable,那么它定义了它通常被认为是元素的自然排序。在某些情况下,这是唯一可能有意义的排序,在其他情况下,它可能是最广泛使用的排序。如果你在数字上寻找例子,可能只有一个(总)排序是有意义的(除了可能反过来)。正如其他人已经指出的那样,它们是具有其他有用排序的其他对象。什么使主要订购(或如果有一个)取决于您的应用程序。如果您在应用程序中管理具有地址的人员,则电话簿排序顺序可以被认为是自然顺序,如果这是最广泛使用的顺序,则按年龄排序可能是次要的。稍微OT:注意非等对象被认为与排序相等的情况,这可能会产生像OrderedList等容器的问题。

答案 1 :(得分:0)

将苹果相互比较将产生相同苹果的类别,如红色,绿色,新旧。只要您对相当广泛的平等感兴趣,那就没问题。但是,如果你要领到薪水,你很高兴你在平等课程中可以识别。 因此,compareto适用于排序和聚类,并且可以获得equals / hashcode进行识别。

答案 2 :(得分:0)

Comparable主要用于存在“已知”默认排序顺序且我们订购的对象或类可由进行更改的开发人员编辑或拥有。

Comparator适用于所订购的类或对象不属于开发人员所做的更改,就像Web服务响应一样。当自然排序不符合需要完成的目标时,它也是首选。