compare() 和 compareTo() 之间有什么区别?
Java和方法有什么区别?这些方法给出了相同的答案吗?compare()
compareTo()
Java和方法有什么区别?这些方法给出了相同的答案吗?compare()
compareTo()
来自 JavaNotes:
a.compareTo(b)
:
可比较接口 :比较值并返回一个 int,该 int 指示值的比较值是小于、等于还是大于。
如果类对象具有自然顺序,请实现接口并定义此方法。所有具有自然排序实现的 Java 类 - 例如:、包装类、Comparable<T>
Comparable<T>
String
BigInteger
compare(a, b)
:
比较器接口:比较两个对象的值。这是作为接口的一部分实现的,典型的用途是定义一个或多个实现此目的的小型实用程序类,以传递给sort()
等方法或通过对数据结构(如TreeMap
和TreeSet
)进行排序来使用。您可能希望为以下各项创建比较器对象:Comparator<T>
sort()
如果您的类对象具有一个自然排序顺序,则可能不需要 compare()。
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html 总结
可
比较 可比较的对象能够将自身与另一个对象进行比较。
比较器
比较器对象能够比较两个不同的对象。该类不是在比较其实例,而是在比较其他类的实例。
用例上下文:
可比接口
equals 方法和 and 运算符测试相等/不等式,但不提供测试相对值的方法。
一些类(例如,String和其他具有自然排序的类)实现接口,它定义了一个方法。
如果要将它与 或 方法一起使用,则需要在类中实现。==
!=
Comparable<T>
compareTo()
Comparable<T>
Collections.sort()
Arrays.sort()
定义比较器对象
您可以创建比较器,以任意方式对任何类进行排序。
例如,该类定义比较器CASE_INSENSITIVE_ORDER
。String
这两种方法之间的差异可以链接到:
有序集合的概念:
对集合进行排序时,这意味着您可以按特定(非随机)顺序(a 未排序)循环访问集合。Hashtable
具有自然顺序的集合不仅有序,而且排序。定义自然顺序可能很困难!(如自然字符串顺序)。
另一个区别,HaveAGuess在评论中指出:
Comparable
在实现中,从界面中不可见,因此当您进行排序时,您并不真正知道会发生什么。Comparator
让您放心,订购将得到很好的定义。