简单理解Java中的Comparable接口和Comparator接口

本文介绍了Java中的Comparable和Comparator接口,它们主要用于排序。Comparable接口通过compareTo()方法实现对象的自然排序,常用于TreeSet和数据结构如二分搜索树、堆。Comparator接口则通过compare()方法进行定制排序,是函数式接口,可以使用Lambda表达式。在选择使用时,若类中频繁进行比较操作,推荐实现Comparable接口;若仅需临时或定制排序规则,建议使用Comparator。

一、Comparable接口

1、Java提供了Comparable接口,其主要作用是用来排序,这个接口中定义了一个 compareTo(Obj obj) 方法,该方法返回了一个整数值,实现该接口的类必须实现重写该方法,然后实现了该接口类的对象就可以比较比大小了。

2、当一个对象调用该方法进行比较时,比如obj1.comparaTo(obj2),如果返回值是0则相等,返回值是正整数则obj1更大,返回值是负整数则obj2更大

3、其中这些类实现了Comparable接口:BigDecimal,Character,Boolean,String,Data,Time等类。

4、那么接下来我们就用TreeSet类举个例子,我们知道TreeSet与HashSet使用hash算法决定储存位置不同,是采用红黑树的数据结构来储存结合元素,并且TreeSet类支持两种排序方法:自然排序定制排序,其中自然排序就可以用来实现Comparable接口。

class T implements Comparable{
   
   //我们用T类实现Comparable接口
    int count;//定义一个实例变量
    public T(int count){
   
   //包含一个参数的构造器
        this.count = count;}
    @Override//重写toString方法
    public String toString(){
   
   
        return "SetMap.T[count:" + count + "]";}
    @Override//重写equal方法
    public boolean equals(Object obj){
   
   
        if (this == obj){
   
   return true;}
        if (obj != null && obj.getClass() == T.class){
   
   
            T t = (T) obj;
            return t.count == this.count;}
        return false;
    }
    @Override//重写compareTo比较方法
    public int compareTo(Object obj) {
   
   
        T t 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值