java的compare to(),java – compare()和compareTo()之间有什么区别?

JavaNotes:

> a.compareTo(b):

可比较的接口:比较值并返回一个int,它告诉这些值是否小于,等于或大于。

如果你的类对象有一个自然的顺序,实现Comparable< T>接口并定义此方法。具有自然排序的所有Java类实现可比较的< T> – 示例:String,wrapper classes,BigInteger

> compare(a,b):

比较器接口:比较两个对象的值。这被实现为比较器< T>的一部分。接口,典型的用法是定义一个或多个实现这个的小实用程序类,传递给诸如sort()之类的方法,或者通过排序数据结构(如TreeMap和TreeSet)来使用。您可能需要为以下内容创建一个Comparator对象:

>多重比较。提供几种不同的方法来排序东西。例如,您可能希望按名称,ID,年龄,高度对Person类进行排序…您可以为每个类定义一个Comparator,以传递给sort()方法。

>系统类为您无法控制的类提供比较方法。例如,您可以定义一个比较字符串,比较它们的长度。

>策略模式要实现策略模式,您希望将算法表示为可作为参数传递的对象,保存在数据结构等中。

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

可比

类似对象能够将自身与另一个对象进行比较。

比较器

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

用例上下文:

可比较的接口

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

一些类(例如,String和具有自然排序的其他类)实现可比较的< T>接口,它定义了compareTo()方法。

您将要实现可比较的< T>在你的类中,如果你想使用它与Collections.sort()或Arrays.sort()方法。

定义比较器对象

您可以创建比较器以对任何类进行任意排序。

例如,String类定义了CASE_INSENSITIVE_ORDER comparator。

两种方法之间的区别可以与以下概念相关:

订购集合:

当一个Collection被排序时,它意味着你可以在一个特定的(非随机)顺序中迭代集合(一个Hashtable没有排序)。

> Comparable是在实现中,从界面不可见,所以当你排序你不真正知道会发生什么。>比较器让您放心,排序将被明确定义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值