java-排序接口Comparable

Comparable接口

使实现类自身具备某种比较规则以便对其对象进行自然排序的接口

自然排序:是要求自定义类实现comparable接口并重写其compareTo(T o)方法,在此方法中依据xx属性进行排序的算法。

  • public interface Comparable<T>

    该接口对实现它的每个类的对象强加一个整体排序。这个排序被称为类的自然排序 ,类的compareTo方法被称为其自然比较方法 。

    实现此接口的对象的列表(和数组)可以自动排序Collections.sort (和Arrays.sort )。实现该接口的对象,可以使用如在键sorted map或作为在元件sorted set ,而不需要指定一个comparator 。

    一类的自然排序C被说成是与equals一致 ,当且仅当e1.compareTo(e2) == 0具有相同的布尔值e1.equals(e2) ,每e1e2C 。注意, null不是任何类的实例,而e.compareTo(null)应该抛出一个NullPointerException即使e.equals(null)返回false 。

    强烈建议(尽管不需要)自然排序与等于一致。这是因为,当没有显式比较器的排序集(和排序映射)与其自然排序与equals不一致的元素(或键)一起使用时会“奇怪地”。特别地,这种排序集合(或排序映射)违反了用于设定(或映射)的通用合同,其按照equals方法定义。

    例如,如果加上两个键ab使得(!a.equals(b) && a.compareTo(b) == 0)到有序集合不使用显式的比较器,所述第二add (有序集合不增加的大小和)操作返回false因为ab是等价从排序集的角度。

    实际上,实现Comparable所有Java核心类都具有与等于一致的自然排序。一个例外是java.math.BigDecimal ,其自然排序等于BigDecimal具有相等值和不同精度(例如4.0和4.00)的对象。

    对于数学倾斜,定义给定类C的自然排序的关系是:

     {(x, y) such that x.compareTo(y) <= 0}. 

    这个总订单的是:

     {(x, y) such that x.compareTo(y) == 0}. 

    它从合同紧跟compareTo ,该商数是一个等价关系 C ,那自然排序是一个总的顺序 C 。当我们说一个类的自然排序与equals一致时 ,我们意味着自然排序的商是由类的equals(Object)方法定义的等价关系:

      {(x, y) such that x.equals(y)}.

 

Conparator 比较器

在外部自定义比较规则以便容器对其储存数据进行定制排序的对象;

定制排序:要求自定义类实现comparator接口并重写其compare(T o1,T o2)方法,在此方法中依据xx属性进行排序的算法,也成为比较器排序;

Comparable 接口 实现该接口的类具有排序功能,需要重写comparareTo方法,使用当前对象和参数对象进行比较

Comparator接口,不会对集合中储存的元素进行修饰;需要自定义比较器类实现改接口,重写compare方法,比较连个参数对象;需要将比较器对象以参数的形式传入集合的构造器中。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/78867.html

(0)
guozi的头像guozi
上一篇 2024年5月30日
下一篇 2024年5月30日

相关推荐

  • 如何设置安卓大屏导航桌面?

    你是否曾经为了手机桌面的混乱而苦恼?是否想过如何让手机桌面更加简洁和实用?那么,安卓大屏导航桌面就是你的最佳选择。它不仅可以帮助你整理手机桌面,还能提供更多实用的功能。接下来,让我…

    行业资讯 2024年4月21日
    0
  • 私服服务器租用

    想象一下,如果你可以拥有一个私服服务器,那么你将拥有无限的可能性。什么是私服服务器?它能为你带来什么作用和优势?私服服务器租用的流程又是怎样的?在这个充满竞争的网络安全加速行业,如…

    行业资讯 2024年4月19日
    0
  • 微信域名被屏蔽解决,微信域名被屏蔽怎么办啊

    (1)违法内容:微信作为社交平台,有义务严格遵守国家相关法律法规。如果某些网站或链接发布违反国家法律法规的内容,例如色情、暴力、赌博等信息,被发现后可能会被微信平台屏蔽。 (2)恶…

    行业资讯 2024年5月8日
    0
  • 游戏盾SDK防护功能

    游戏盾SDK防护功能 1.游戏盾SDK是面向移动APP用户推出的高度可定制的网络安全解决方案,本方案中通过SDK的集成可以实现DDoS攻击的免疫和CC攻击的问题得到解决。 2.游戏…

    行业资讯 2024年3月28日
    0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注