猿问

为什么Java类应该实现类似的呢?

为什么Java类应该实现类似的呢?

为什么JavaComparable使用?为什么有人要Comparable在课堂上?您需要实现可比较的实际示例是什么?



呼唤远方
浏览 272回答 3
3回答

慕无忌1623718

这是一个真实的样本。请注意String还实现Comparable.class&nbsp;Author&nbsp;implements&nbsp;Comparable<Author>{ &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;firstName; &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;lastName; &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;compareTo(Author&nbsp;other){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;compareTo&nbsp;should&nbsp;return&nbsp;<&nbsp;0&nbsp;if&nbsp;this&nbsp;is&nbsp;supposed&nbsp;to&nbsp;be &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;less&nbsp;than&nbsp;other,&nbsp;>&nbsp;0&nbsp;if&nbsp;this&nbsp;is&nbsp;supposed&nbsp;to&nbsp;be&nbsp;greater&nbsp;than&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;other&nbsp;and&nbsp;0&nbsp;if&nbsp;they&nbsp;are&nbsp;supposed&nbsp;to&nbsp;be&nbsp;equal &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;last&nbsp;=&nbsp;this.lastName.compareTo(other.lastName); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;last&nbsp;==&nbsp;0&nbsp;?&nbsp;this.firstName.compareTo(other.firstName)&nbsp;:&nbsp;last; &nbsp;&nbsp;&nbsp;&nbsp;}}晚点.。/** &nbsp;*&nbsp;List&nbsp;the&nbsp;authors.&nbsp;Sort&nbsp;them&nbsp;by&nbsp;name&nbsp;so&nbsp;it&nbsp;will&nbsp;look&nbsp;good. &nbsp;*/public&nbsp;List<Author>&nbsp;listAuthors(){ &nbsp;&nbsp;&nbsp;&nbsp;List<Author>&nbsp;authors&nbsp;=&nbsp;readAuthorsFromFileOrSomething(); &nbsp;&nbsp;&nbsp;&nbsp;Collections.sort(authors); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;authors;}/** &nbsp;*&nbsp;List&nbsp;unique&nbsp;authors.&nbsp;Sort&nbsp;them&nbsp;by&nbsp;name&nbsp;so&nbsp;it&nbsp;will&nbsp;look&nbsp;good. &nbsp;*/public&nbsp;SortedSet<Author>&nbsp;listUniqueAuthors(){ &nbsp;&nbsp;&nbsp;&nbsp;List<Author>&nbsp;authors&nbsp;=&nbsp;readAuthorsFromFileOrSomething(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;TreeSet<Author>(authors);}

慕婉清6462132

可比较定义了一个自然的顺序。这意味着当一个对象应该被认为“小于”或“大于”时,定义它。假设你有一堆整数,你想对它们进行排序。这很容易,只要把它们放在一个分类的集合中,对吗?TreeSet<Integer>&nbsp;m&nbsp;=&nbsp;new&nbsp;TreeSet<Integer>();&nbsp;m.add(1);m.add(3);m.add(2);for&nbsp;(Integer&nbsp;i&nbsp;:&nbsp;m)...&nbsp;//&nbsp;values&nbsp;will&nbsp;be&nbsp;sorted但是现在假设我有一些自定义对象,其中排序对我来说是有意义的,但是还没有定义。比方说,我有用邮政编码和人口密度来表示地区的数据,我想按密度对它们进行排序:public&nbsp;class&nbsp;District&nbsp;{ &nbsp;&nbsp;String&nbsp;zipcode;&nbsp; &nbsp;&nbsp;Double&nbsp;populationDensity;}现在,对这些对象进行排序的最简单方法是通过实现可比较性来用自然顺序来定义它们,这意味着有一种标准的方法来定义这些对象的排序。public&nbsp;class&nbsp;District&nbsp;implements&nbsp;Comparable<District>{ &nbsp;&nbsp;String&nbsp;zipcode;&nbsp; &nbsp;&nbsp;Double&nbsp;populationDensity; &nbsp;&nbsp;public&nbsp;int&nbsp;compareTo(District&nbsp;other) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;populationDensity.compareTo(other.populationDensity); &nbsp;&nbsp;}}请注意,您可以通过定义一个比较器来完成等效的事情。不同之处在于,比较器定义了排序逻辑。对象外部..也许在一个单独的过程中,我需要通过邮政编码对相同的对象进行排序-在这种情况下,排序不一定是对象的属性,或者与对象的自然排序不同。您可以使用外部比较器来定义对整数的自定义排序,例如通过按字母顺序对它们进行排序。基本上,排序逻辑必须存在于某个地方。可能是-在对象本身中,如果它是自然可比较的(扩展可比较性)。整数)在外部比较器中提供,如上面的示例所示。

肥皂起泡泡

引用javadoc;此接口对实现该接口的每个类的对象强制执行总体排序。这种排序称为类的自然排序,类的比较方法称为自然比较法。实现此接口的对象的列表(和数组)可以通过Collection s.Sort(和Arrays.Sort)自动排序。实现此接口的对象可以用作排序映射中的键或排序集中的元素,而无需指定比较器。编辑:.,并使重要的一点大胆。
随时随地看视频慕课网APP

相关分类

Java
我要回答