/*
class A implements Comaprable<A>{
}
那么 A x = new A(); 类关系图
Object o = A; Object
Comparable c = A; | Comparable
A 实现了 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<Object>)o1).compareTo((Student)o2);
((Comparable<XXX>)o1).compareTo((YYY)o2);
如果想写泛型那么 XXX 要么是同一类型,要么XXX是YYY的父类!因为我们强转的Comparable是比较XXX类型数据的,
而YYY类型满足上面的条件才能成功向上转型为XXX类型!
*/ class Person implements Comparable<Person>{
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<Student>{
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<Object>)o1).compareTo((Student)o2); return ((Comparable)o1).compareTo((Student)o2);
}
}

  

java中Comparable实现对象的比较的更多相关文章

  1. Java中Comparable和Comparator接口区别分析

    Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...

  2. Java 中 Comparable 和 Comparator 比较

    Java 中 Comparable 和 Comparator 比较 目录: Comparable Comparator Comparable 和 Comparator比较 第二个例子 之 Compar ...

  3. Java中的函数对象

    初次听说java中的函数对象可能,比较的陌生.可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把 ...

  4. java中的string对象深入了解

    这里来对Java中的String对象做一个稍微深入的了解. Java对象实现的演进 String对象是Java中使用最频繁的对象之一,所以Java开发者们也在不断地对String对象的实现进行优化,以 ...

  5. java中对集合对象list的几种循环访问

    java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...

  6. (转)java中对集合对象list的几种循环访问总结

    Java集合的Stack.Queue.Map的遍历   在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...

  7. Java中创建实例化对象的几种方式

    Java中创建实例化对象有哪些方式? ①最常见的创建对象方法,使用new语句创建一个对象.②通过工厂方法返回对象,例:String s =String.valueOf().(工厂方法涉及到框架)③动用 ...

  8. Java中字节与对象之间的转换

    近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOu ...

  9. Java中创建的对象多了,必然影响内存和性能

    1, Java中创建的对象多了,必然影响内存和性能,所以对象的创建越少越好,最后还要记得销毁.

随机推荐

  1. 简单BigDecimal运算精度

    项目中遇到了数值运算,如网上所写的,一般有这几个方法: /** * 提供精确的加法运算. * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ publ ...

  2. win server服务安装

    从一台机子的服务移到我的测试环境中: 1.copy 100pC上的服务目录(d:\...)到13PC中

  3. [1008]harder_prime

    素数定义:一个大于1的整数,如果它的约数如果只有1和它本身,那么它就是一个素数. 回文数定义:一个整数把它的各位数字倒过来还是它本身,那么它就是回文数,比如说2,99,393. 回文素数定义:一个数如 ...

  4. poj1083

    The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in ...

  5. SSH三大框架笔面试总结

    Java工程师(程序员)面题 Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Sess ...

  6. docker on centos

    docker最好在centos7上安装,centos6.5上似乎麻烦不少 这里直接在centos7上安装,要提前装一下epel的repo yum install docker 安装就行 chkconf ...

  7. 黑马程序员——HTML表格布局

    ---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...

  8. 快速学习C语言四: 造轮子,ArrayList

    高级语言里的列表是最常用的数据结构,在C里造个轮子玩玩,C没有泛型,先用int练习. Collection的ADT一般有hasnext,next,add, remove操作,List一般还加了remo ...

  9. 使用curl 下载HTML

    简单的一个curl小例子: #include <iostream> #include <string> #include <sstream> #include &l ...

  10. RCP:为指定的导航器添加上下文菜单

    可以参考Eclipse的Help->Help Content下的: Platform Plug-in Developer Guide > Programmer's Guide > P ...