zoukankan      html  css  js  c++  java
  • 记一下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类型,就不需要强制转换了。
  • 相关阅读:
    牛逼的博客地址
    动画的keyPath
    跳转到系统设置的各种配置
    UITextField只允许输入正数
    冒泡排序
    number类型的数组
    正则表达式
    C中常用的数学函数
    利用运行时,查看一个类的所有子类
    玉蟾宫(悬线法)
  • 原文地址:https://www.cnblogs.com/chihane/p/3463030.html
Copyright © 2011-2022 走看看