Java排序(灵活定义排序策略)
项目中的一个实际需求,对于数据库中的信息,不同的查询要求以不同的排序方式来展示; 抽象成下面的问题进行解决;
问题描述:
学校的学生信息,包含以下属性:ID、姓名、所在城市、成绩;
所有学校的学生信息统一存放,但不同学校查询信息时要求按照不同的排序策略显示,如何编写统一的排序方法满足这种需求;
学生信息如下所示(简单起见,保存在一个properties文件中):
记录=ID,姓名,所在城市,成绩
stu01=001,zhangsan,xian,90
stu02=002,zhangsan,nanjing,85
stu03=002,zhangsan,beijing,90
stu04=002,lisi,shanghai,90
stu05=003,wangwu,guangdong,95
stu06=004,qianqi,xinjiang,60
问题解决:
将问题分解为下面散步来循序渐进的解决;
1.学生具有ID、姓名两个属性,要求先按照ID排序,ID相同的按照姓名排序;
这是一个比较典型的java排序问题,首先创建一个CommonStudent的Bean类;
实现比较算法如下:
public static void main(String[] args) throws IOException { //普通情况的排序 List<CommonStudent> commonList = initCommonList(); Collections.sort(commonList, new CommonComp()); print(commonList); //信息丰富的学生排序 List<EnrichStudent> enrichList = initComplicateList(); Collections.sort(enrichList, new EnrichComp()); print(enrichList); //更加通俗的排序 List<EnrichStudent> complicateList = initComplicateList(); List<String> keys = new ArrayList<String>(); keys.add("id"); keys.add("name"); keys.add("count"); Collections.sort(complicateList, new ComplicateComp(keys)); print(complicateList); }