天天看点

一个Comparable小例子

对象排序可以使用Comparable接口和Comparator接口,这两个接口可以实现同样的目的。

Comparable:在自定义类时就要实现这个接口,实现它的compareTo方法。事先就要考虑排序问题。

Comparator :这个接口可以独立于自定义类,可以认为初期设计时没有考虑排序问题,对类打的一个补丁。

另外使用Comparator接口实现对象的排序,可以使逻辑更加清晰,数据和排序逻辑分离。

以下使用Comparable对对象进行排序。

CompareDemo.java

import java.util.Arrays;

public class CompareDemo {

    public static void main(String[] args) {

        Person[] personList = new Person[3];

        personList[0] = new Person(10, "tom", "M");

        personList[1] = new Person(13, "john", "F");

        personList[2] = new Person(11, "jack", "M");

        Arrays.sort(personList);

        System.out.print("code" + "/t");

        System.out.print("name" + "/t");

        System.out.print("sex");

        System.out.println();

        for(int i=0; i<personList.length; i++){

            Person person = personList[i];

            System.out.print(person.getCode() + "/t");

            System.out.print(person.getName() + "/t");

            System.out.print(person.getSex());

            System.out.println();

        }

    }

}

Person

public class Person implements Comparable{

    private int code;

    private String name;

    private String sex;

    public Person(int code, String name, String sex){

        this.code = code;

        this.name = name;

        this.sex = sex;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getSex() {

        return sex;

    }

    public void setSex(String sex) {

        this.sex = sex;

    }

    public int getCode() {

        return code;

    }

    public void setCode(int code) {

        this.code = code;

    }

    public int compareTo(Object object) {

        Person anthorPerson = (Person)object;

       return this.code - anthorPerson.getCode();     

       }

}

继续阅读