java策略模式练习

来源:互联网 发布:淘宝大学领风教育 编辑:程序博客网 时间:2024/05/09 07:48

public class Person {

private int id;

private int age;

private String name;
}

要求:假如有若干个Person对象存在一个List当中,对它们进行排序,分别按照id、age、name进行排序(正常的倒序、升序),假如年龄或者姓名重复,则按照id排序。

public class Person {    protected int id;    protected int age;    protected String name;    public Person(int id, int age, String name) {        this.id = id;        this.age = age;        this.name = name;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}//抽象策略public interface Sorter {    public void sort(List<Person> persons);}//按照id的升序public class SorterByIdAsc implements Sorter {    @Override    public void sort(List<Person> persons) {        Collections.sort(persons, new MyComp());    }    class MyComp implements Comparator<Person> {        @Override        public int compare(Person o1, Person o2) {            return o1.id - o2.id;        }    }}//按照id的降序public class SorterByIdDesc implements Sorter {    @Override    public void sort(List<Person> persons) {        Collections.sort(persons, new MyComp());    }    class MyComp implements Comparator<Person> {        @Override        public int compare(Person o1, Person o2) {            return o2.id - o1.id;        }    }}//按照名字的升序public class SorterByNameAsc implements Sorter {    @Override    public void sort(List<Person> persons) {        Collections.sort(persons, new MyComp());    }    class MyComp implements Comparator<Person> {        @Override        public int compare(Person o1, Person o2) {            if(o1.name.equals(o2.name)){                return o1.id - o2.id;            }            return o1.name.compareTo(o2.name);        }    }}//按照姓名的降序public class SorterByNameDesc implements Sorter {    @Override    public void sort(List<Person> persons) {        Collections.sort(persons, new MyComp());    }    class MyComp implements Comparator<Person> {        @Override        public int compare(Person o1, Person o2) {            if(o1.name.equals(o2.name)){                return o2.id - o2.id;            }            return o2.name.compareTo(o1.name);        }    }}public class SorterByAgeDesc implements Sorter{    @Override    public void sort(List<Person> persons) {        Collections.sort(persons, new MyComp());    }    class MyComp implements Comparator<Person>{        @Override        public int compare(Person o1, Person o2) {            if(o1.age==o2.age){                return o2.id-o1.id;            }            return o2.age-o1.age;        }    }}//按照年龄的升序排序public class SorterByAgeAsc implements Sorter{    @Override    public void sort(List<Person> persons) {        Collections.sort(persons, new MyComp());    }    class MyComp implements Comparator<Person>{        @Override        public int compare(Person o1, Person o2) {            if(o1.age==o2.age){                return o1.id-o2.id;            }            return o1.age-o2.age;        }    }}public class Environment {    public static void  sort(Sorter sorter,List<Person> persons){        sorter.sort(persons);    }}
0 0
原创粉丝点击