资讯专栏INFORMATION COLUMN

Comparable and Comparator

Barrior / 3405人阅读

摘要:中的一切类都是继承于,在中实现了函数所以,其它所有的类也相当于都实现了该函数。是比较和的大小。返回负数,意味着比小返回零,意味着等于返回正数,意味着大于。

Comparable

Comparable 是排序接口。 Collection.sort() 和Arrays.sort()都支持可以排序"实现Comparable接口的类的对象的List列表(或数组)" 换而言之, 如果数组或列表想支持sort方法排序, 他里面的object必须要实现Comparable接口.

Comparable 定义

Comparable 接口仅仅只包括一个函数,它的定义如下:

package java.lang;
import java.util.*;

public interface Comparable {
    public int compareTo(T o);
}

说明:
假设我们通过 x.compareTo(y) 来“比较x和y的大小”。若返回“负数”,意味着“x比y小”;返回“零”,意味着“x等于y”;返回“正数”,意味着“x大于y”。

Comparator

Comparator 是比较器接口。

我们若需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么,我们可以建立一个“该类的比较器”来进行排序。这个“比较器”只需要实现Comparator接口即可。
Sort就又Sort(list, comparator)的功能.

Comparator 定义

Comparator 接口仅仅只包括两个个函数,它的定义如下:

package java.util;

public interface Comparator {

    int compare(T o1, T o2);

    boolean equals(Object obj);
}

说明:
(01) 若一个类要实现Comparator接口:它一定要实现compareTo(T o1, T o2) 函数,但可以不实现 equals(Object obj) 函数。类默认都是已经实现了equals(Object obj)的。 Java中的一切类都是继承于java.lang.Object,在Object.java中实现了equals(Object obj)函数;所以,其它所有的类也相当于都实现了该函数。

(02) int compare(T o1, T o2) 是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。

文章节选自http://www.cnblogs.com/skywang12345/p/3324788.html 有修改

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65334.html

相关文章

  • Java ComparatorComparable辨析

    摘要:与辨析声明文章均为本人技术笔记,转载请注明出处比较三种状态根据需求定义序升序降序返回负数,表示比较两元素满足序,无须调整,返回,表示比较两元素相等,无须调整位置,返回正数,表示比较两元素不满足序,按序调整位置对象内部排序源码继承接口的对象必 Comparator与Comparable辨析 声明 文章均为本人技术笔记,转载请注明出处:[1] https://segmentfault.co...

    wenhai.he 评论0 收藏0
  • 容器之数组~Arrays源码分析(一)

    摘要:容器相关的操作及其源码分析说明本文是基于分析的。源码是个好东东,各种编码技巧,再次佩服老外下一个主题是容器,。在了解容器之前我们先来看下重点的数据吧,还有工具类。第一段话说明返回一个指定数组的固定列表。 容器相关的操作及其源码分析 说明 1、本文是基于JDK 7 分析的。JDK 8 待我工作了得好好研究下。Lambda、Stream。 2、因为个人能力有限,只能以模仿的形式+自己的理...

    lvzishen 评论0 收藏0
  • Java Comparable vs Comparator

    摘要:和方法可以对数组进行排序,但是这种方法排序要求对象所在的类必须实现接口,此接口用于指定排序规则如果一个类已经开发完成,但是在此类建立的初期并没有实现接口,此时肯定是无法进行对象排序操作的,所以为了解决这个问题,定义了另一个比较器的操 Collections.sort() 和 Arrays.sort()方法可以对Object数组进行排序,但是这种方法排序要求对象所在的类必须实现Compa...

    KitorinZero 评论0 收藏0
  • comparator, comparable】小总结

    摘要:有些类是直接实现了接口的,这个时候如果要改写排序条件,就直接改写接口的方法有些类不是用接口,而是用了个类,这时候改写方法接口只有一个方法具体实践中一般写作与某个的比较,比如类比较排序时重写有些类在构造时可以加参数,比如,默认是从小到大排序 有些类是直接实现了Comparable接口的,这个时候如果要改写排序条件,就直接改写Comparable接口的CompareTo方法 有些类不是用...

    KnewOne 评论0 收藏0
  • Java™ 教程(对象排序)

    对象排序 List l可以如下排序。 Collections.sort(l); 如果List包含String元素,它将按字母顺序排序,如果它由Date元素组成,它将按时间顺序排序,这是怎么发生的?String和Date都实现了Comparable接口,Comparable实现为类提供了自然的顺序,允许该类的对象自动排序,下表总结了一些实现Comparable的更重要的Java平台类。 类 自然...

    Chao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<