java中Comparable实现对象的比较
生活随笔
收集整理的這篇文章主要介紹了
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);}
}
轉載于:https://www.cnblogs.com/hujunzheng/p/3871930.html
總結
以上是生活随笔為你收集整理的java中Comparable实现对象的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能交通板块股票 作为一个投资者肯定要知
- 下一篇: NYOJ 99单词拼接(有向图的欧拉(回