分享

Java中Comparable接口的使用

 Mis林桑 2017-03-10

Java中Comparable接口的使用

2014年07月11日 18:50:09

      分类: JavaEE

      public interface Comparable

      当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:

int compareTo(T o)在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。返回值及比较规则:1、返回负值---->小于2、返回零------>等于3、返回正值---->大于例子:定义实现Comparable接口的类

      [java]view plaincopy

  1.       //定义一个类,并实现comparable接口  
  2.       class Worker implements Comparable{  
  3.       private String name;  
  4.       private int age;  
  5.       private int salary;  
  6.       
  7.       public Worker(String name, int age, int salary) {  
  8.       super();  
  9.       this.name = name;  
  10.       this.age = age;  
  11.       this.salary = salary;  
  12.       }     
  13.       
  14.       public String getName() {  
  15.       return name;  
  16.       }  
  17.       
  18.       public int getAge() {  
  19.       return age;  
  20.       }  
  21.       
  22.       public int getSalary() {  
  23.       return salary;  
  24.       }  
  25.       
  26.       /** 
  27.       *实现Comparable接口的compareTo方法,在此方法中定义自己的比较规则 
  28.       * 首先按工资有由低到高排序,过工资相同则按年龄由高到底排序 
  29.       */  
  30.       @Override  
  31.       public int compareTo(Worker other) {  
  32.       // TODO Auto-generated method stub  
  33.       if(this.salary < other.getSalary()){     //工资小于其他人时返回负值  
  34.       return -1;  
  35.       }else if(this.salary > other.getSalary()){   //工资大于其他人时返回正值  
  36.       return 1;  
  37.       }else{                                      //工资等于其他人时按照年龄再排序  
  38.       if(this.age < other.getAge()){  
  39.       return 1;//表示由高到低排序  
  40.       }else if(this.age >= other.getAge()){  
  41.       return -1;  
  42.       }  
  43.       }  
  44.       return 0;         
  45.       }  
  46.       
  47.       @Override  
  48.       public String toString() {  
  49.       // TODO Auto-generated method stub  
  50.       return this.name +'\t' + this.age + '\t' + this.salary;  
  51.       }  
  52.       
  53.       };  
测试程序:

      [java]view plaincopy

  1.       public class ComparableDemo {  
  2.       
  3.       /** 
  4.       * @param args 
  5.       */  
  6.       public static void main(String[] args) {  
  7.       // TODO Auto-generated method stub  
  8.       
  9.       Worker [] workers = new Worker[5];  
  10.       workers[0] = new Worker('test1',25,2000);  
  11.       workers[1] = new Worker('test2',24,2100);  
  12.       workers[2] = new Worker('test3',26,2100);  
  13.       workers[3] = new Worker('test4',27,2200);  
  14.       workers[4] = new Worker('test5',28,1900);  
  15.       
  16.       //调用Arrays.sort()方法进行排序  
  17.       Arrays.sort(workers);  
  18.       for(Worker w : workers){  
  19.       System.out.println(w);  
  20.       }  
  21.       
  22.       }  
  23.       
XXX
1/10
XXX

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多