(2)对于按多个关键字进行排序的情况,如果一个具体策略被使用一次,那么通常使用匿名类来声明和实例化这个具体策略,在需要进行排序的集合或数组中实现,如:
……
ArrayList<EmployeeGradeRecord> aList= new ArrayList<EmployeeGradeRecord>();
……
Collections.sort(aList, newComparator<EmployeeGradeRecord>()
{
public int compare(EmployeeGradeRecord Obj1,EmployeeGradeRecord Obj2)
{
//按总分数,降序排序
return (int)(Obj2.getGradeSum()- Obj1.getGradeSum());
}
});
(3)如果一个具体策略需要被到处去以便重复使用,可以先定义一个实现具体策略的类,如:
import java.util.Comparator;
public class TotalGradeComparator implementsComparator<EmployeeGradeRecord>
{
public intcompare(EmployeeGradeRecord Obj1, EmployeeGradeRecord Obj2)
{
//按总分数,降序排序
return (int)(Obj2.getGradeSum()- Obj1.getGradeSum());
}
}
然后,在需要排序的集合或者数组中,按照指定的具体策略进行排序,如:
Collections.sort(aList,new TotalGradeComparator());