【Java】Comparable接口的实现与使用

Comparable接口的实现与使用

1 Comparable接口声明及其作用

想对某个类的对象之间做比较,就需要实现Comparable 接口。接口中只有一个方法compareTo,这个方法定义了对象之间的比较规则。依据这个“比较规则”,我们就能对所有对象实现排序。

下面是Comparable接口的声明以及作用,可以看到它可以使继承他的类进行比较大小,只需要调用实现类的compareTo方法即可

public interface Comparable < T >
This interface imposes a total ordering on the objects of each class that implements it. This ordering is referred to as the class’s natural ordering, and the class’s compareTo method is referred to as its natural comparison method.
此接口对实现它的每个类的对象施加总顺序。这种排序称为类的自然排序,而类的compareTo方法称为其自然比较方法。

实际上,java 中排序算法的底层也依赖Comparable接口,Comparable接口中只有一个方法:

public int compareTo(Object obj)   \\其中 obj 为要比较的对象

实现了Comparable接口的类,可以很好的和集合类或是一些泛型算法很好的协作,你可以付出很小的代价实现强大的功能。

2 实例

compareTo()方法传入该类的另外一个实例,返回一个int值,这个方法每执行一次都是对传入的对象和和本生对象进行比较。返回的int值如果是一个正值(不包括零)则在数组或是集合中交换两个实例的位置,否则位置保持不变。

在Arrays包中调用sort方法时,通过实现Comparable接口的实现类可以override compareTo() 方法来实现具体情况下的比较。

package cn.jkwzs;
import java.util.Arrays;  //调用包

public class CompareTo {
    public static void main(String[] args) {
        Man[ ] msMans = { new Man(3, "a"), new Man(60, "b"), new Man(2, "c") };
        Arrays.sort(msMans);  //调用compareTo()方法
        System.out.println(Arrays.toString(msMans));
    }
}

class Man implements Comparable {  //实现接口
    int age;
    String name;
    public Man(int age, String name) {  //构造器
        super();this.age = age;
        this.name = name;
    }
    public String toString() {
        return this.name+":"+this.age;
    }
    public int compareTo(Object o) {  //重写compareTo()方法
        Man man = (Man) o;
        if (this.age < man.age) {
            return -1;
        }
        if (this.age > man.age) {
            return 1;
        }
        return 0;
    }
}

在这里插入图片描述

实现结果为:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值