compareTo()

我们为什么需要compareTo()?

  数据,是可以比较大小的,比如:2大于1。那么我们自己写的类,也是一种引用数据类型,可以不可以自定义规则,让它也能有大小的比较呢?

  这时候,就需要重写compareTo()方法来实现大小的比较。

compareTo()的重写

  compareTo与toString()等方法不同,它并不是在Object类中定义的,因为毕竟不是所有的类都需要比较大小嘛。

  要想类可以比较大小,我们需要让类继承Comparable接口,然后实现该接口中的compareTo()方法,实例:

class Student implements Comparable<Student> {
	
	private Integer id;
	private String name;
	private Integer age;

    @Override
    public int compareTo(Student o) { // 负数:小于    整数:大于    零:等于
        if (this.id > o.id) {
            return 1;
        } else if (this.id < o.id) {
            return -1;
        } else {
            return 0;
        }
    }

	public Student(Integer id, String name, Integer age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

public class Test {

	public static void main(String args[]) {
		
		Student s1 = new Student(1,"小猪",18);
		Student s2 = new Student(2,"小猫",25);
		System.out.println(s1.compareTo(s2));
	    
	}
}
-------------------------------------
输出结果为:
-1

  根据Java的规定,比较对象比传入参数小时,结果返回负数,等于时返回0,大于时返回正数。

  在使用可排序集合,如TreeMap、TreeSet时,集合中的元素类必须要实现compareTo()方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值