首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

当局系统中机构岗位人员复杂排序算法

2012-10-09 
政府系统中机构岗位人员复杂排序算法给定的一组成员(机构、人员(带岗位)) 1? 基础排序的实现: 机构 部门 岗

政府系统中机构岗位人员复杂排序算法

给定的一组成员(机构、人员(带岗位))
1? 基础排序的实现: 机构 部门 岗位 用户实体都要实现Comparator接口
2? 排序算法? 要排序的类实现compareable 接口
public class AgOpusGroupMemberComparable implements Comparator{
????? public int compare(Object o1,Object o2) {
???????? if(! o1 instanceof AgOpusGroupMember ||? !o2 instanceof AgOpusGroupMember)
??? throw new Exception("对象类型错误,必须都为AgOpusGroupMember");

AgOpusGroupMember m1=(AgOpusGroupMember)o1;
AgOpusGroupMember m2=(AgOpusGroupMember)o2;

//具体排序算法
//先取得两个成员在领导班子和成员中的排序
Long cityLeaderOrder1 = getCityLeaderOrder(m1);
Long cityLeaderOrder2 = getCityLeaderOrder(m2);
???
if(cityLeaderOrder1 != null && cityLeaderOrder2 != null)
????? return cityLeaderOrder1.compareTo(cityLeaderOrder2);
??
if(cityLeaderOrder1 != null && cityLeaderOrder2 == null)
??? ?return 1;

if(cityLeaderOrder1 == null && cityLeaderOrder2 != null)
??? return 0;
???
??? //如果都不是领导班子中的人
??? if(cityLeaderOrder1 == null && cityLeaderOrder2 == null){
??????? ?//再看机构?
???????? AgOpusOrgForm org1 = getOrg(m1);
???????? AgOpusOrgForm org2 = getOrg(m2);

??????? //取得类型
??????? Long memberType1 = getType(m1);
??????? Long memberType2 = getType(m2);

?????? //先按机构排序
????? if(org1 != org2 )
?????????? return org1.compareTo(org2);
???? ?else{
???????????? //如果是同一个机构
????????
????????? ?if(memberType1 == 1 && memberType1 ==2) {
????????????????? return 1; //机构排在前?
?????????? }else{

???????????????? //看该人员是否为机构内重要人员
???????????????? Long importPersonNo1 = getImportPersonNo(m1);
???????????????? Long importPersonNO2 = getImportPersonNo(m2);
??????????????? ?if(importPersonNo1 != null && importPersonNo2 != null)
??????????????????????? return importPersonNo1.compareTo(importPersonNo2);
???????????????? if(importPersonNo1 == null && importPersonNo2 != null)
?????????????????????? return -1;
?????????????? ? if(importPersonNo1 != null && importPersonNo2 == null)
?????????????????????? return 1;

???????????????? //如果都不是机构内重要人员 看部门顺序

????????????????? if(importPersonNo1 == null && importPersonNo2 == null){
??????????????????????? AgOpusDepartMent dept1= getDept(m1);
?????????????????????? ?AgOpusDepartMent dept2= getDept(m2);?

??????????????????????? if(dept1 !=?dept2 )
????????????????????????????? return dept.compareTo(dept2);

???????????????????????? //如果部门相同 则比较部门内的岗位顺序

??????????????????????? AgOpusPosition pos1= getPos(m1);
??????????????????????? AgOpusPosition pos2= getPos(m2);
??????????????????????? return pos1.compareTo(pos2);
???????????????? }
?????
??????? ?}
??????????????? ?
??? }
}
}

3 调用 Collections.sort();
Collections.sort(List<AgOpusGroupMember>,AgOpusGroupMemberComparable);

?

热点排行