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
- java策略模式练习
- 策略模式小练习
- 策略模式小练习
- Java 基础一些代码练习笔记(策略模式)
- java策略模式
- java中的策略模式
- Java策略模式(Strategy)
- java笔记 策略模式
- java 策略模式
- java 策略模式
- Java策略模式笔记
- Java策略模式回顾
- 策略模式----Java
- 策略模式-java实现
- JAVA策略模式
- 策略模式--java
- java策略设计模式
- java策略模式
- 关于eclipse环境开发软件的使用
- ubuntu下vgg16预训练模型转换为mxnet格式
- Xcode打包ipa的基本步骤
- 基于索引的SQL语句优化之降龙十八掌(转载)!
- maven工程添加本地工程库
- java策略模式练习
- 左老师容器接水
- Tomcat绑定多个域名和配置虚拟目录的方法
- FZU2236 求最长递增子序列的个数----树状数组记录位置
- 图形视图框架(The QGraphics View Framework)
- 迭代器 基本操作
- 最长公共子串、最长公共子序列、最长递增子序列、最长回文子串
- 【struts-spring-hibernate环境简单搭建】
- Timer和TimerTask详解