Java 比较器Comparator 跟Comparable

Java 比较器Comparator 和Comparable
1. 比较器Comparator
/*
 * 文 件 名:  Comp.java
 * 版    权:  Sunny Technologies Co., Ltd. Copyright YYYY-YYYY,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  HAOHAO
 * 修改时间:  2012-9-4
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.sunny.collection;

import java.util.Comparator;

import com.sunny.parse.Person;

/**
 * <一句话功能简述>
 * <功能详细描述>
 *
 * @author  HAOHAO
 * @version  [版本号, 2012-9-4]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class Comparators implements Comparator<Person>
{
    public Comparators()
    {
    }

    /**
     * 比较器实现方法
     * @param o1 Person
     * @param o2 Person
     * @return int 返回比较的结果
     */
    public int compare(Person o1, Person o2)
    {
        if (o1.getName().compareTo(o2.getName()) > 0)
        {
            return 1;
        }
        else if (o1.getName().compareTo(o2.getName()) < 0)
        {
            return -1;
        }
        else
        {
            return o1.getAge() - o2.getAge();
        }
    }

}


2. 实现类
/*
 * 文 件 名:  AppComparators.java
 * 版    权:  Sunny Technologies Co., Ltd. Copyright YYYY-YYYY,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  HAOHAO
 * 修改时间:  2012-9-4
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.sunny.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

import com.sunny.parse.Person;

/**
 * <一句话功能简述>
 * <功能详细描述>
 *
 * @author  HAOHAO
 * @version  [版本号, 2012-9-4]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class AppComparators
{

    /** <一句话功能简述>
     * <功能详细描述>
     * @param args [参数说明]
     *
     * @return void [返回类型说明]
     * @exception throws [违例类型] [违例说明]
     * @see [类、类#方法、类#成员]
     */
    public static void main(String[] args)
    {
        SortedSet<Person> personList = new TreeSet<Person>();
        personList.add(new Person("张三", "男", 39));
        personList.add(new Person("关欣", "女", 29));
        personList.add(new Person("五", "男", 25));
        personList.add(new Person("小三", "女", 49));

        List<Person> list = new ArrayList<Person>();
        list.add(new Person("张三", "男", 439));
        list.add(new Person("关欣", "男", 39));
        list.add(new Person("张三", "男", 339));
        list.add(new Person("五", "男", 49));
        list.add(new Person("小三", "男", 59));
        Comparators comp = new Comparators();
        Collections.sort(list, comp);
        for (Person person : list)
        {
            System.out.println(person.getName() + " *******" + person.getAge());
        }
        System.out.println("---------------");
        Person[] arrayPerson = { new Person("张三", "男", 439),
                new Person("关欣", "男", 39), new Person("张三", "男", 339),
                new Person("五", "男", 49), new Person("小三", "男", 59) };
        java.util.Arrays.sort(arrayPerson);

        for (Person person2 : arrayPerson)
        {
            System.out.println(person2.getName() + " *******" + person2.getAge());
        }
    }
}


3.Person 对象
/*
 * 文 件 名:  Person.java
 * 版    权:  Co., Ltd. Copyright YYYY-YYYY,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  HAOHAO
 * 修改时间:  2012-9-2
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.sunny.parse;

/**
 * <一句话功能简述>
 * <功能详细描述>
 *
 * @author  HAOHAO
 * @version  [版本号, 2012-9-2]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class Person implements Comparable<Person>
{

    private String name;

    private String sex;

    private int age;

    private String email;

    public Person()
    {
    }

    public Person(String name)
    {
        super();
        this.name = name;
    }

    public Person(String name, String sex)
    {
        super();
        this.name = name;
        this.sex = sex;
    }

    public Person(String name, String sex, int age)
    {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public Person(String name, String sex, int age, String email)
    {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.email = email;
    }

    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 getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public String toString()
    {
        return "name = " + name + ",sex = " + sex + ",age = " + age
                + ",email = " + email;
    }

    //重写equals
    public boolean equals(Object o)
    {
        if (o == null)
        {
            return false;
        }

        if (this == o)
        {
            return true;
        }

        if (!(o instanceof Person))
        {
            return false;
        }

        Person employee = (Person) o;
        return (this.age == employee.age) && (this.name.equals(employee.name));
    }

    //重写hashCode
    public int hashCode()
    {
        int result = 17;
        result = 37 * result + age;
        result = 37 * result + name.hashCode();
        return result;
    }

    public int compareTo(Person o)
    {
        return this.name.compareTo(o.getName());
    }
}