博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中Comparable实现对象的比较
阅读量:6250 次
发布时间:2019-06-22

本文共 2051 字,大约阅读时间需要 6 分钟。

/*class A implements Comaprable{}那么 A x = new A();                           类关系图Object o = A;                                 ObjectComparable c = A;                               |   ComparableA 实现了 Comparable 接口嘛                      |-----|-----A所以有 o instanceof A == true;       o instanceof Comparable == true;	    例如ArrayList添加对象实例时,对象实例添加之后先向上转型为Object!内部用Object[]数组接收!	Arrays.sort()对Object排序的函数内部就是将 Object 向下转型为Comparable类型。	因为每个对象实现了Comparable接口,利用多态性,(Comparable)o1).compareTo(o2)将调用子类的compareTo()方法!		((Comparable)o1).compareTo((Student)o2);	((Comparable
)o1).compareTo((YYY)o2); 如果想写泛型那么 XXX 要么是同一类型,要么XXX是YYY的父类!因为我们强转的Comparable是比较XXX类型数据的, 而YYY类型满足上面的条件才能成功向上转型为XXX类型!*/class Person implements Comparable
{ String name; int age; Person(){ name = ""; age = 0; } Person(String name, int age){ this.name = name; this.age = age; } public String toString(){ return name + "...." + age; } public boolean equals(Object o){ Person x = (Person)o; return name.equals(x.name) && age==x.age; } public int compareTo(Person o){ if(name.compareTo(o.name)==0) return o.age - age; return o.name.compareTo(name); }}class Student implements Comparable
{ String name; int age; public Student(){ name = ""; age = 0; } public Student(String name, int age){ this.name = name; this.age = age; } public int compareTo(Student o){ if(name.compareTo(o.name)==0) return o.age - age; return o.name.compareTo(name); }} public class Test{ public static void main(String[] args){ Person p = new Person("fsf", 45); Student s = new Student("faga", 20); Student ss = new Student("fsfdfsf", 456); Comparable xx = (Comparable)s; System.out.println(xx); cmp(s,ss); } public static int cmp(Object o1, Object o2){ //return ((Comparable
)o1).compareTo((Student)o2); return ((Comparable)o1).compareTo((Student)o2); }}

  

转载地址:http://ioysa.baihongyu.com/

你可能感兴趣的文章
Eclipse 编译java文件后出错 左树无红叉
查看>>
Laravel Debugbar
查看>>
CentOS系统程序包管理器【rpm、yum】
查看>>
谷歌浏览器跨域问题,命名行解决
查看>>
MyEclipse生成WAR包并在Tomcat下部署发布(转发)
查看>>
后台管理UI皮肤的选择
查看>>
inline-block 左边固定,右边自适应
查看>>
ubuntu 环境变量PATH的修改
查看>>
动态代理模式
查看>>
进度条,随机数---demo笔记【原创】
查看>>
Android -- 自定义View小Demo,绘制钟表时间(一)
查看>>
Download Free Oracle Reports Building Guide eBook
查看>>
固定标题列、标题头table
查看>>
Geeks - Check whether a given graph is Bipartite or not 二分图检查
查看>>
使用Ant构建简单项目
查看>>
求两个有序数组的中位数(4. Median of Two Sorted Arrays)
查看>>
git锁和钩子以及图形化界面
查看>>
DataSnap Server 客户端调用 异常
查看>>
cesium之地图贴地量算工具效果篇
查看>>
C# winform DevExpress上传图片到数据库【转】
查看>>