在我正在学习的Java教科书中,它说这使用“字典顺序”来返回一个整数。我了解它是如何工作的,但是在编程中使用它的具体方式是什么?
7 回答
所有内置的排序方法在对非基元排序时都使用它
假设您想对一杯水进行分类,对象本身被称为Glass
。
现在让我们说一个Glass
罐子有一个高度和它所容纳的水量。
现在假设您想比较两个Glasses
. 你会怎么做?
我会通过覆盖该compareTo
方法来做到这一点。在那种方法中,我会说如果两个杯子的高度相同并且里面的水量相同,那么它们是相等的。显然,您需要大于或小于的逻辑,但您明白了。
如果您有一个自定义类最终会出现在需要排序的集合中,那么您将在此处放置所有自定义逻辑,以确定对象相对于您要比较的对象的顺序.
compareTo() 是在 Java 中表示对非原始类型的默认总排序的标准方法。
返回整数的好处是只需要调用一次就可以区分<、==和>这三种情况。(例如使用方法 equals() 和 greaterThan() 的替代方法需要两次调用。)
它可以在需要总订购的任何地方使用。最重要的是:
对于 TreeSet 和 TreeMap 等排序集合的实现(这些使用红黑树)。
用于显式排序集合。
在其他算法中,例如有理数等用户定义的数字类型的范围。
String
例如,它可以对 s 进行排序。它将返回一个值< 0
,= 0
或 ,> 0
这取决于一个是否String
按字母顺序在另一个之前。
compareTo 比较值并返回一个 int,它告诉值比较小于、等于还是大于。
如果您的类对象具有自然顺序,请实现 Comparable 接口并定义此方法。所有具有自然排序的 Java 类都实现了这一点(String、Double、BigInteger,...)。
compareTo 方法需要满足以下条件:
- 如果 x 和 y 不同,x.compareTo(y) 是 y.compareTo(x) 的相反符号
- 如果 x.compareTo(y) > 0,并且 y.compareTo(z) > 0,则 x.compareTo(z) > 0。
- 建议与 equals() 保持一致。
参考资料:
http:
//leepoint.net/notes-java/data/expressions/22compareobjects.html
http://www.javapractices.com/topic/TopicAction.do?Id=10
它最常见的用途是在对字符串列表进行排序时用作比较函数。一个调用compareTo
告诉您一个字符串是在另一个之前,在另一个之后,还是与另一个字符串相同。