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());
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值