给定的一组成员(机构、人员(带岗位))
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);
分享到:
相关推荐
在本系统中,我们主要实现了五种常用的排序算法:冒泡排序法、快速排序法、直接插入排序法、折半插入排序法和树形选择排序法。这些算法都是在计算机科学中最基本和最重要的排序算法,广泛应用于各种数据处理和分析...
本资料"参考资料-【排序法考核工具】岗位评价中排序法的应用.zip"似乎着重于将排序法应用于岗位评价,这可能是为了更系统、公正地对员工绩效或职位价值进行排序。 排序算法有很多种,如冒泡排序、插入排序、选择...
六种排序算法的排序系统 本篇文章主要讲解了六种排序算法的排序系统,包括插入排序、冒泡排序、选择...本系统实现了六种排序算法的排序系统,满足用户的需求,可以选择六种排序算法中的任意一个进行排序,并输出结果。
基于Python2.7实现的LeaderRank复杂网络节点排序算法,算法输出排序后每个节点的重要性值 参考论文:2011-Leaders in Social Networks, the Delicious
排序算法实现与演示系统任务说明书,提供操作:选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序。
排序算法是计算机科学中最基础和重要的算法之一,用于将一组数据按照特定的顺序进行排列。本文将对几种常见的内部排序算法和外部排序算法进行详细总结。 首先,排序的基本定义是:给定一个包含n个记录的序列,其...
总的来说,理解和实现排序算法对于任何IT专业人员来说都是至关重要的,无论是在软件开发、系统设计还是硬件工程方面。通过C++和Verilog的结合,我们可以从软件和硬件角度全面地掌握排序的内在机制。
常见的经典排序算法有希尔排序、二分插入法、直接插入法、带哨兵的直接排序法、冒泡排序、选择排序、快速排序、堆排序等。 一、希尔排序(Shell 排序法) 希尔排序法,又称宿小增量排序,是 1959 年由 D.L.Shell ...
在这个“参考资料-【排序法考核工具】排序法岗位评价.zip”压缩包中,重点讨论的是如何运用排序法来评估不同岗位的价值和相对重要性。 在岗位评价中,排序法通常用于确定组织内各个岗位的相对等级,以便于制定公平...
电容电压排序算法在柔性直流输电系统中的应用 电容电压排序算法是柔性直流输电系统中的核心技术之一,该算法能够实现在 MMC(Modular Multilevel Converter,模块化多电平换流器)结构中电容电压的优化排序。该算法...
在软件技术基础中,查找和排序算法是非常重要的概念,广泛应用于数据库、操作系统、网络通信等领域。因此,了解查找和排序算法的实现和应用是软件技术基础的关键。 查找和排序算法是计算机科学中的一种基本算法,...
"C#排序算法的动态演示系统"是一个教学工具,它以图形化方式展示了C#中常见的排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。通过动态模拟,用户可以直观地看到每一步操作,从而更好地...
排序算法的效率直接关系到数据处理的速度和系统的性能。《排序理论、算法及系统》是Michael L. Pinedo所著作的一本关于排序问题的经典之作。在这本书中,作者详细探讨了多种排序问题,包括但不限于单机排序问题以及...
这里我们重点关注一个名为“包含五种算法排序系统”的压缩包,这个包很可能包含了五种不同的排序算法实现。排序算法是计算机程序设计中的基础工具,它们用于将一组数据按照特定的顺序进行排列,如从小到大或从大到小...
陕西科技大学学校的排序算法实验,最近小咲写的: 一、实验目的 1. 熟练运用冒泡排序、选择排序、插入排序、希尔排序、快速排序、合并排序、堆排序等七种常见的内排序算法 2. 使用不同的数据结合计算各种算法的运行...
在IT领域,排序算法是计算机科学中的基础但至关重要的部分,尤其在数据处理和数据分析中起着关键作用。本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并...
桶式排序法桶式排序法桶式排序法桶式排序法
拓扑排序算法思想:a.在有向图中任选一个没有前趋的顶点输出;b.从图中删除该顶点和所有以它为尾的弧;c.重复上述a、b,直到全部顶点都已输出,此时,顶点输出序列即为一个拓朴有序序列;或者直到图中没有无前趋的...