java可比较的和比较器的区别_compare()和compareTo()有什么区别?

问题

Java'scompare()和compareTo()methods有什么区别?那些方法给出了相同的答案吗?

#1 热门回答(145 赞)

a.compareTo(b):Comparable interface:比较值并返回一个int,它告诉值是否比较小于,等于或大于。如果你的类对象具有自然顺序,请实现Comparable 接口并定义此方法。所有具有自然排序的Java类都实现Comparable - 示例:String,包装类,BigInteger

compare(a,b):比较器接口:比较两个对象的值。这是作为Comparator 接口的一部分实现的,典型的用途是定义一个或多个实现它的小实用程序类,传递给sort()等方法,或者通过对TreeMap等数据结构进行排序。 TreeSet中。你可能希望为以下内容创建Comparator对象:多重比较。提供几种不同的方法来排序。例如,你可能希望按名称,ID,年龄,高度等对Person类进行排序。你可以为每个类定义一个Comparator以传递给sort()方法。系统类为无法控制的类提供比较方法。例如,你可以为字符串定义比较器,并按长度进行比较。策略模式要实现策略模式,你希望将算法表示为可以作为参数传递的对象,保存在数据结构中等。

如果你的类对象具有一个自然排序顺序,则可能不需要compare()。

可比较

可比较的对象能够将自己与另一个对象进行比较。

比较器

比较器对象能够比较两个不同的对象。该类不是比较它的实例,而是比较其他类的实例。

用例上下文:

Comparable interface

equals方法和==和!=运算符测试等式/不等式,但不提供测试相对值的方法。

一些类(例如,String和具有自然排序的其他类)实现了Comparable接口,其定义了acompareTo()方法。

如果要将其与Collections.sort()或Arrays.sort()方法一起使用,你将需要在你的课程中实现Comparable。

定义比较器对象

你可以为任何类创建任意方式的比较器至。

例如,238385447类定义了CASE_INSENSITIVE_ORDER比较器。

这两种方法之间的区别可以与以下概念联系起来:

订购收藏:

订购Collection时,这意味着你可以按特定(非随机)顺序迭代集合(aHashtable未订购)。

可比较是在实现中,并且从界面中看不到,所以当你排序时,你真的不知道会发生什么。

比较器让你放心,订购将得到很好的定义。

#2 热门回答(13 赞)

相似之处:

两者都是比较两个对象的自定义方法。

两者都返回anint描述两个对象之间的关系。

**差异:**方法compare()是一种在实施Comparator接口时有义务实现的方法。它允许你将两个对象传递给方法,并返回描述其关系的int。

Comparator comp = new MyComparator();

int result = comp.compare(object1, object2);

方法compareTo()是一种在实现Comparable接口时有义务实现的方法。它允许将对象与相似类型的对象进行比较。

String s = "hi";

int result = s.compareTo("bye");

摘要:

基本上它们是比较事物的两种不同方式。

#3 热门回答(13 赞)

compareTo()来自Comparable接口。

compare()来自Comparator接口。

两种方法都做同样的事情,但每个接口都在稍微不同的上下文中使用。

Comparable接口用于对实现类的对象强加自然排序。 compareTo()方法被称为自然比较方法。 Comparator接口用于对实现类的对象强加总排序。有关更多信息,请参阅确切何时使用每个接口的链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值