首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >compare()和compareTo()有什么区别?

compare()和compareTo()有什么区别?
EN

Stack Overflow用户
提问于 2009-01-07 12:59:16
回答 8查看 163.4K关注 0票数 118

Java的compare()compareTo()方法有什么不同?这些方法给出的答案是一样的吗?

EN

回答 8

Stack Overflow用户

发布于 2009-01-07 13:08:10

这些方法不必给出相同的答案。这取决于您调用它们的对象/类。

如果您正在实现自己的类,而您知道要在某个阶段进行比较,则可以让它们实现可比较的接口,并相应地实现compareTo()方法。

如果您正在使用来自API的一些类,而这些API没有实现可比较的接口,但是您仍然希望对它们进行比较。即用于排序。您可以创建自己的类来实现比较器接口,并在其compare()方法中实现逻辑。

票数 10
EN

Stack Overflow用户

发布于 2009-01-07 13:06:07

具有此方法的对象与其协作者的关系是不同的。

compareTo()是接口Comparable的一个方法,因此它用于将此实例与另一个实例进行比较。

compare()是接口Comparator的一个方法,因此它用于比较另一个类的两个不同实例。

如果您愿意,实现Comparable意味着可以很容易地比较类的实例。

实现Comparator意味着,实例适合比较(其他类的)不同对象。

票数 3
EN

Stack Overflow用户

发布于 2014-12-04 10:53:22

代码语言:javascript
复制
compareTo(T object)

来自java.lang.Comparable接口,实现为将此对象与另一个对象进行比较,从而为此对象提供小于的负int值,0表示等于,或正值表示大于另一个对象。这是更方便的比较方法,但必须在每个要比较的类中实现。

代码语言:javascript
复制
compare(T obj1, T obj2)

来自java.util.Comparator接口,在一个单独的类中实现,该接口比较另一个类的对象,为第一个对象提供小于的负int值,为等于提供0,或者为大于第二个对象的正值。当您不能使类实现compareTo()时,需要使用它,因为它是不可修改的。当您想要以不同的方式比较对象,而不仅仅是一个对象(例如按名称或年龄)时,也可以使用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/420223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档