Java中Comparable接口的使用 2014年07月11日 18:50:09 分類: JavaEE public interface Comparable 當需要對一個對象進行排序時,該對象應該實現(xiàn)Comparable接口,并實現(xiàn)其唯一的方法: int compareTo(T o)在該方法中定義自己的排序規(guī)則,當調(diào)用Arrays.sort(Object[] a)方法時則回調(diào)compareTo()方法,并按照自己的規(guī)則對對象數(shù)組進行排序。返回值及比較規(guī)則:1、返回負值---->小于2、返回零------>等于3、返回正值---->大于例子:定義實現(xiàn)Comparable接口的類 [java]view plaincopy - //定義一個類,并實現(xiàn)comparable接口
- class Worker implements Comparable{
- private String name;
- private int age;
- private int salary;
-
- public Worker(String name, int age, int salary) {
- super();
- this.name = name;
- this.age = age;
- this.salary = salary;
- }
-
- public String getName() {
- return name;
- }
-
- public int getAge() {
- return age;
- }
-
- public int getSalary() {
- return salary;
- }
-
- /**
- *實現(xiàn)Comparable接口的compareTo方法,在此方法中定義自己的比較規(guī)則
- * 首先按工資有由低到高排序,過工資相同則按年齡由高到底排序
- */
- @Override
- public int compareTo(Worker other) {
- // TODO Auto-generated method stub
- if(this.salary < other.getSalary()){ //工資小于其他人時返回負值
- return -1;
- }else if(this.salary > other.getSalary()){ //工資大于其他人時返回正值
- return 1;
- }else{ //工資等于其他人時按照年齡再排序
- if(this.age < other.getAge()){
- return 1;//表示由高到低排序
- }else if(this.age >= other.getAge()){
- return -1;
- }
- }
- return 0;
- }
-
- @Override
- public String toString() {
- // TODO Auto-generated method stub
- return this.name +'\t' + this.age + '\t' + this.salary;
- }
-
- };
測試程序: [java]view plaincopy - public class ComparableDemo {
-
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
-
- Worker [] workers = new Worker[5];
- workers[0] = new Worker('test1',25,2000);
- workers[1] = new Worker('test2',24,2100);
- workers[2] = new Worker('test3',26,2100);
- workers[3] = new Worker('test4',27,2200);
- workers[4] = new Worker('test5',28,1900);
-
- //調(diào)用Arrays.sort()方法進行排序
- Arrays.sort(workers);
- for(Worker w : workers){
- System.out.println(w);
- }
-
- }
-
|