记一下Comparable接口,将来大概用得着

能排序的类最好都实现它,可以实现自定义排序方法。

比如写个类叫屎,将来要排序的话,希望它按照营养含量排序,就需要实现这个方法,因为java本身不知道该怎么排序。

 

Comparable接口里只有一个方法,叫compareTo(Object obj)。

重写这个方法的时候记得先把形参obj转换成自己的类型,比如 Shit s = (Shit) obj。不然Object看不到子类的属性。

然后需要有返回值,类型int,大于零说明这个大,其他类推。

 

目前只发现了在排序里的用法,已经很有用了,在别处应该还有别的用法,将来自然会知道。

比如新建一个Shit类型的数组,里面初始化几个对象,然后调用一下sort()方法,就按照营养含量排序了,根据compareTo()方法的内容,还可以实现各种神经病排序方法。

 

放个例子:

 1 import java.util.Arrays;
 2 
 3 public class test implements Comparable<Object> {
 4     int cmp;
 5     public test(int i) {
 6         this.cmp = i;
 7     }
 8     
 9     public int compareTo(Object o) {
10         test obj = (test) o;
11         if (obj.cmp == this.cmp)
12             return 0;
13         else
14             return obj.cmp > this.cmp ? 1 : -1;
15     }
16     
17     public String toString() {
18         return Integer.toString(this.cmp);
19     }
20     
21     public static void main(String[] args) {
22         test one = new test(152);
23         test two = new test(43690);
24         test tre = new test(15);
25         test fur = new test(1536);
26         
27         test[] list = new test[4];
28         list[0] = one; list[1] = two; list[2] = tre; list[3] = fur;
29         
30         for (test t: list) {
31             System.out.println(t);
32         }
33         
34         Arrays.sort(list);
35         System.out.println();
36         
37         for (test t: list) {
38             System.out.println(t);
39         }
40     }
41 }
千本座具罗
=================================================================================================
添加刚学的泛型知识。
 
public class test implements Comparable<Object> {
    }
    
    public int compareTo(Object o) {
        test obj = (test) o;
 
红字部分全改成test类型,蓝字部分就不需要了。
 
尖括号里的内容指定了泛型,意思是我在这里只用这种类型,介于Object是所有对象的父类,现在用了跟没用一样。
如果指定test类型,那下边取出内容自然也是test类型,就不需要强制转换了。
posted @ 2013-12-07 17:48  Chihane  阅读(128)  评论(0编辑  收藏  举报