Java的compare()
和compareTo()
方法有什么不同?这些方法给出的答案是一样的吗?
发布于 2009-01-07 13:08:10
这些方法不必给出相同的答案。这取决于您调用它们的对象/类。
如果您正在实现自己的类,而您知道要在某个阶段进行比较,则可以让它们实现可比较的接口,并相应地实现compareTo()方法。
如果您正在使用来自API的一些类,而这些API没有实现可比较的接口,但是您仍然希望对它们进行比较。即用于排序。您可以创建自己的类来实现比较器接口,并在其compare()方法中实现逻辑。
发布于 2009-01-07 13:06:07
具有此方法的对象与其协作者的关系是不同的。
compareTo()
是接口Comparable的一个方法,因此它用于将此实例与另一个实例进行比较。
compare()
是接口Comparator的一个方法,因此它用于比较另一个类的两个不同实例。
如果您愿意,实现Comparable
意味着可以很容易地比较类的实例。
实现Comparator
意味着,实例适合比较(其他类的)不同对象。
发布于 2014-12-04 10:53:22
compareTo(T object)
来自java.lang.Comparable接口,实现为将此对象与另一个对象进行比较,从而为此对象提供小于的负int值,0表示等于,或正值表示大于另一个对象。这是更方便的比较方法,但必须在每个要比较的类中实现。
compare(T obj1, T obj2)
来自java.util.Comparator接口,在一个单独的类中实现,该接口比较另一个类的对象,为第一个对象提供小于的负int值,为等于提供0,或者为大于第二个对象的正值。当您不能使类实现compareTo()时,需要使用它,因为它是不可修改的。当您想要以不同的方式比较对象,而不仅仅是一个对象(例如按名称或年龄)时,也可以使用它。
https://stackoverflow.com/questions/420223
复制相似问题