Java 比较器Comparator 跟Comparable
Java 比较器Comparator 和Comparable
1. 比较器Comparator
2. 实现类
3.Person 对象
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()); } }