使用策略模式对存放在list表中的学生信息进行正逆排序
2014-03-28 15:58
441 查看
public class Student { private int ID; private String name; private int age; public int getID() { return ID; } public void setID(int id) { ID = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } import java.util.*; public interface SortInterface { public void sort(List<Student> list); } import java.util.*; public class AgeTurn implements Comparator<Student>,SortInterface { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub if(o1.getAge()==o2.getAge()) return o1.getID()-o2.getID(); else return o1.getAge()-o2.getAge(); } public void sort(List<Student> list) { Collections.sort(list, new AgeTurn()); } } import java.util.*; public class AgeTurn2 implements Comparator<Student>,SortInterface { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub if(o1.getAge()==o2.getAge()) return o1.getID()-o2.getID(); else return o2.getAge()-o1.getAge(); } public void sort(List<Student> list) { Collections.sort(list, new AgeTurn2()); } } import java.util.*; public class IdTurn implements Comparator<Student>,SortInterface { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub return o1.getID()-o2.getID(); } public void sort(List<Student> list) { Collections.sort(list, new IdTurn()); } } import java.util.*; public class IdTurn2 implements Comparator<Student>,SortInterface { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub return o2.getID()-o1.getID(); } public void sort(List<Student> list) { Collections.sort(list, new IdTurn2()); } } import java.util.*; public class NameTurn implements Comparator<Student>, SortInterface { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub if(o1.getName().equals(o2.getName())) return o1.getID()-o2.getID(); else return o1.getName().compareTo(o2.getName()); } public void sort(List<Student> list) { Collections.sort(list, new NameTurn()); } } import java.util.*; public class NameTurn2 implements Comparator<Student>,SortInterface { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub if(o1.getName().equals(o2.getName())) return o1.getID()-o2.getID(); else return o2.getName().compareTo(o1.getName()); } public void sort(List<Student> list) { Collections.sort(list, new NameTurn2()); } } import java.util.*; public class Environment { private SortInterface sortInterface; public void setSortInterface(SortInterface sortInterface) { this.sortInterface=sortInterface; } public void sort(List<Student> list) { this.sortInterface.sort(list); } } import java.util.*; public class DataTest { public static void main(String args[]) { Student stu1=new Student(); stu1.setID(20120001); stu1.setName("zhangsan"); stu1.setAge(21); Student stu2=new Student(); stu2.setID(20120002); stu2.setName("lisi"); stu2.setAge(22); Student stu3=new Student(); stu3.setID(20120003); stu3.setName("wangwu"); stu3.setAge(23); Student stu4=new Student(); stu4.setID(20120004); stu4.setName("liuliu"); stu4.setAge(24); Student stu5=new Student(); stu5.setID(20120005); stu5.setName("zhaoqi"); stu5.setAge(25); Student stu6=new Student(); stu6.setID(20120006); stu6.setName("张三"); stu6.setAge(23); Student stu7=new Student(); stu7.setID(20120007); stu7.setName("李四"); stu7.setAge(23); Student stu8=new Student(); stu8.setID(20120008); stu8.setName("zhangsan"); stu8.setAge(26); Student stu9=new Student(); stu9.setID(20120009); stu9.setName("zhangsan"); stu9.setAge(27); List<Student> list=new LinkedList<Student>(); list.add(stu1); list.add(stu2); list.add(stu3); list.add(stu4); list.add(stu5); list.add(stu6); list.add(stu7); list.add(stu8); list.add(stu9); Environment environment=new Environment(); environment.setSortInterface(new NameTurn()); environment.sort(list); Iterator<Student> ite=list.iterator(); while(ite.hasNext()) { Student stu=ite.next(); System.out.println(stu.getID()+" "+stu.getName()+" "+stu.getAge()); } } }
相关文章推荐
- java 使用面向对象方式实现录入学生信息,取出成绩最大值、最小值、平均值、对其进行排序
- (1) 输入学生的基本信息,计算每个学生的平均分,并将学生信息存入磁盘文件“stud”中; (2) 将文件stud中的数据按平均分从高到低的顺序进行排序,并将排序结果存放到文件“stud_sort”中
- 深入理解 c# 第一章 使用lambda表达式 对 List <Product> 进行排序
- 使用Collections.sort()对List/ArrayList进行排序 推荐
- java中list里面存放map,根据map中的某一个字段进行排序
- SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)
- 设计模式实战(一)——使用策略模式(strategy pattern)实现多关键字排序
- 使用Collections对list进行排序
- 结构体数组存放学生信息并排序输出
- 使用c++的 list.sort()进行排序
- 使用sort对list进行倒序排序
- 使用策略模式进行简单的form验证
- 设计模式实战(一)——使用策略模式(strategy pattern)实现多关键字排序
- 代码之美1:使用策略模式来编写solr 排序方法
- 使用Collections对list的内容进行排序
- VS2010使用扩展方法对List<T>进行随机排序
- 深入理解 c# 第一章 使用IComparer<Product>委托 对 List <Product> 进行排序
- 题目及解答:策略模式(对Person类按姓名、学号、年龄进行排序)
- 使用策略模式(strategy pattern)实现多关键字排序(1)
- java 策略模式,list集合,实现id 姓名年龄正序倒序排序(如果年龄或者姓名重复,按id正序排序)