android comparable接口,考虑实现Comparable接口

第十二条: 考虑实现Comparable接口

(注意本文不适合学习,纯属个人笔记)

1. Comparable接口介绍

一个类,如果实现了Comparable接口,我们可以很容易的将它在数组或是集合中进行排序。so。。。Comparable这个接口是用来实现对象排序的。

假设有这么一个类:

public class CompObj implements Comparable {

private int age;

private String name;

public CompObj(int age, String name) {

this.age = age;

this.name = name;

}

public int getAge() {

return age;

}

public String getName() {

return name;

}

//重点在这,这是接口中唯一的一个方法

@Override

public int compareTo(@NonNull CompObj another) {

return this.age - another.age;

}

}

然后我们可以这样对他进行排序:

List list = ...;//初始化一个list

Collections.sort(list); //集合排序,就是这么简单

CompObj array[] = ...;//初始化一个数组

Arrays.sort(list); //数组排序,就是这么简单

现在对comparaTo()方法进行简单说明。

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

2. 为什么要考虑实现Comparable接口

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

3. 什么时候应该考虑是想Comparable接口

(1)你写的类是一个值类(前面的文章介绍过)。

(2)类中有很明显的内在排序关系,如字母排序、按数值顺序或是时间等。

(3)前面两者是并且关系。

4. 如何很好的实现Comparable接口

(1)满足对称性。

即对象A.comparaTo(B) 大于0的话,则B.comparaTo(A)必须小于0;

(2)满足传递性。

即对象A.comparaTo(B) 大于0,对象B.comparaTo(Z)大于0,则对象A.comparaTo(Z)一定要大于0;

(3)建议comparaTo方法和equals()方法保持一致。

即对象A.comparaTo(B)等于0,则建议A.equals(B)等于true。

(4)对于实现了Comparable接口的类,尽量不要继承它,而是采取复合的方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值