java中Comparable实现对象的比较
/*
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实现对象的比较的更多相关文章
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- Java 中 Comparable 和 Comparator 比较
Java 中 Comparable 和 Comparator 比较 目录: Comparable Comparator Comparable 和 Comparator比较 第二个例子 之 Compar ...
- Java中的函数对象
初次听说java中的函数对象可能,比较的陌生.可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把 ...
- java中的string对象深入了解
这里来对Java中的String对象做一个稍微深入的了解. Java对象实现的演进 String对象是Java中使用最频繁的对象之一,所以Java开发者们也在不断地对String对象的实现进行优化,以 ...
- java中对集合对象list的几种循环访问
java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...
- (转)java中对集合对象list的几种循环访问总结
Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...
- Java中创建实例化对象的几种方式
Java中创建实例化对象有哪些方式? ①最常见的创建对象方法,使用new语句创建一个对象.②通过工厂方法返回对象,例:String s =String.valueOf().(工厂方法涉及到框架)③动用 ...
- Java中字节与对象之间的转换
近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOu ...
- Java中创建的对象多了,必然影响内存和性能
1, Java中创建的对象多了,必然影响内存和性能,所以对象的创建越少越好,最后还要记得销毁.
随机推荐
- ubuntu安装packet提示重复冲突问题
今天装个zip出现: dpkg: error processing archive /var/cache/apt/archives/libc6-dev-i386_2.19-0ubuntu6.5_amd ...
- Swift的基本类型和流程控制
Swift 是一门静态的强类型语言.它以简单.干净.可读性好等特点著称. 1. 为什么是静态语言? 首先静态语言比之动态语言,更具有安全性.它不允许类型之间自动的进行转换,必须要显示的转换.Swif ...
- PADSPCB权威指南-第一章 PADS软件系统(部分)(原创)
PADSPCB权威指南-第一章(部分)豆丁地址:http://www.docin.com/p-707128286.html
- cas+shiro实现不时时的去请求cas进行身份验证
cas+shiro不进行时时去cas验证身份信息,需要用shiro在当前系统有一份完整的认证机构. 那么有一个问题,什么时候去cas校验信息,目前的配置方式: cas系统设置默认的浏览器session ...
- 配置IP地址
1.linux如果在一个路由器环境中,则可以使用dhclient命令获取IP地址. dhclient 2.手动配置 打开配置文件 vi /etc/sysconfig/network-scripts/i ...
- Invalidate,Update与Refresh的区别
在做Windows Forms开发的时候,免不了需要手动刷新窗口,以重绘所需更改的控件,或其它什么的.当出现这类需求时,你有三个选择,使用Invalidate,Update或者Refresh方法. I ...
- Linux 网络编程(IO模型)
针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...
- 《30天自制操作系统》笔记(02)——导入C语言
<30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...
- 据说每个大牛、小牛都应该有自己的库——DOM处理续
在上篇据说每个大牛.小牛都应该有自己的库——DOM处理最后剩下attr()和css()方法没有处理,因为这两个方法当时并不自计划中,是写着写着突然想到的,一时间没有特别好的思路,当时已十一点多了,就去 ...
- DNS 正向查找与反向查找
原创地址:http://www.cnblogs.com/jfzhu/p/3996323.html 转载请注明出处 所谓正向查找,就是说在这个区域里的记录可以依据名称来查找对应的IP地址.反向查找就是在 ...