Comparable和Comparator之间的主要区别是什么。
在什么情况下,哪个比另一个优先?
当你的类实现Comparable
时,该类的compareTo
方法将定义该对象的“自然”顺序。根据合同,该方法有义务(尽管不要求)与该对象上的其他方法保持一致,例如,当.equals()
比较返回true 时,应始终为对象返回0 。
一个比较本身就是如何比较两个对象的定义,可用于可能不与自然顺序排列的方式来比较的对象。
例如,字符串通常按字母顺序进行比较。因此,"a".compareTo("b")
将使用字母比较。如果要比较字符串的长度,则需要编写一个自定义比较器。
简而言之,没有太大区别。它们都是相似手段的目的。在一般情况下,可实现与自然顺序可比的实现(自然顺序定义显然可以接受解释),并为其他排序或比较需求编写比较器。
我的任务是用java编写mergesort,任务还规定我不能使用整数,我必须使用可比较的整数。这是我第一次使用java。我的问题是在合并函数内比较两个comp int数组中的元素。我尝试了if(list[I])compareTo(list2[j]),但compareTo只能取整数。任何帮助都将不胜感激
编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我的任务是用java编写mergesort,任务还规定我不能使用整数,我必须使用可比较的整数。这是我第一次使用java。我的问题是在合并函数内比较两个comp int数组中的元素。我尝试了if(list[I])compareTo(list2[j]),但compareTo只能取整数。任何帮助都将不胜感
问题内容: 我有一个需要在字段上排序的对象列表,例如“分数”。我不加思索地编写了一个实现Comparator的新类,该类可以完成任务并且可以工作。 现在回头看一下,我想知道是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类。分数是订购对象的唯一字段。 我做的可接受的做法是什么? 正确的方法是“首先让类实现Comparable(用于自然排序),如果需要替代字段比较
我知道这些接口用于对集合中的对象进行排序。但我怀疑这两者的真正区别。我读到的一个事实是,如果要比较两个对象而不使用当前对象,请使用Compariable(此)。 但我的问题是即使使用比较器,我们也会比较相同的对象类型。 这里真正的区别是什么。我很困惑。假设下面的例子, 如果我使用比较器,我会让一个类实现比较器,而不是这个。年龄,它有人。年龄那么这里有什么不同呢? 我不知道Collections.s
我有两个基于同一ecore模型的EMF实例版本。我需要以以下格式准备一个从v1到v2更改的事物列表
当我在浏览上面的接口时,在阅读了许多相同主题的站点后,我对这些接口的语法不是很清楚。 请考虑以下代码段: 如果每个查询都是可理解的。