java Comparator和Comparable应用

来源:互联网 发布:小智零食淘宝店 编辑:程序博客网 时间:2024/06/05 14:41
java的Comparator和Comparable

当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。

以下是使用Comparator对对象集合排序的一个例子

package test;import java.util.Comparator;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public static SortByAge getSortByAge(){return new SortByAge();}public static SortByName getSortByName(){return new SortByName();}/** * 定义一个静态内部类----排序器 * 也可以定义一个匿名内部类进行排序 * */public static class SortByAge implements Comparator<Person>{public int compare(Person o1, Person o2) {if(o1.getAge()>o2.getAge()){return 1;}else if(o1.getAge()==o2.getAge()){return 0;} return -1;}}/** * 定义一个静态内部类----第二个排序器 * */public static class SortByName implements Comparator<Person>{public int compare(Person o1, Person o2) {return o1.getName().compareTo(o2.getName());}}public String toString(){return "name:"+this.name+";age="+this.age;}/** * @return the name */public String getName() {return name;}/** * @return the age */public int getAge() {return age;}/** * @param name the name to set */public void setName(String name) {this.name = name;}/** * @param age the age to set */public void setAge(int age) {this.age = age;}}
/**     * 对集合对象进行排序     */    @Test    public void test3(){                Person t1 = new Person("丁晓宇", 21);        Person t2 = new Person("赵四", 22);        Person t3 = new Person("张三", 11);        Person t4 = new Person("刘武", 19);        Person t5 = new Person("刘武2", 19);                List<Person> list = new ArrayList<Person>();        Collections.addAll(list, t1,t2,t3,t4,t5);                System.out.println(list);                //定义一个排序器        SortByAge sortByAge = Person.getSortByAge();        Collections.sort(list, sortByAge);        System.out.println(list);                //定义第二个排序器        Collections.sort(list, Person.getSortByName());        System.out.println(list);    }



0 0
原创粉丝点击