Comparable实现自定义排序

来源:互联网 发布:挡土墙计算软件2016 编辑:程序博客网 时间:2024/06/04 19:10

public interface Comparable<T>

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

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

3、返回正值---->大于

凡是能够排序的类都实现了Comparable接口

案例

package com.cc.cc;//定义一个类,并实现comparable接口  public class Worker implements Comparable<Worker> {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;}/** * 实现Comparable接口的compareTo方法,在此方法中定义自己的比较规则 首先按工资有由低到高排序,当工资相同则按年龄由高到底排序 */@Overridepublic int compareTo(Worker other) {// TODO Auto-generated method stubif (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;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn this.name + "\t" + this.age + "\t" + this.salary;}};
测试

package com.cc.cc;import java.util.Arrays;public class Test {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);                    //调用Arrays.sort()方法进行排序          Arrays.sort(workers);          for(Worker w : workers){              System.out.println(w);          } }}




原创粉丝点击