记一下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类型,就不需要强制转换了。

你可能感兴趣的:(comparable)