`

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

    博客分类:
  • java
阅读更多

给定的一组成员(机构、人员(带岗位))
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

    本资料"参考资料-【排序法考核工具】岗位评价中排序法的应用.zip"似乎着重于将排序法应用于岗位评价,这可能是为了更系统、公正地对员工绩效或职位价值进行排序。 排序算法有很多种,如冒泡排序、插入排序、选择...

    6种排序算法的排序系统

    六种排序算法的排序系统 本篇文章主要讲解了六种排序算法的排序系统,包括插入排序、冒泡排序、选择...本系统实现了六种排序算法的排序系统,满足用户的需求,可以选择六种排序算法中的任意一个进行排序,并输出结果。

    基于Python实现LeaderRank复杂网络中节点排序算法

    基于Python2.7实现的LeaderRank复杂网络节点排序算法,算法输出排序后每个节点的重要性值 参考论文:2011-Leaders in Social Networks, the Delicious

    排序算法实现与演示系统

    排序算法实现与演示系统任务说明书,提供操作:选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序。

    常用的排序算法总结(各种内部排序算法和外部排序算法)

    排序算法是计算机科学中最基础和重要的算法之一,用于将一组数据按照特定的顺序进行排列。本文将对几种常见的内部排序算法和外部排序算法进行详细总结。 首先,排序的基本定义是:给定一个包含n个记录的序列,其...

    Verilog/C++实现排序算法:Verilog/C++实现排序算法:冒泡排序、选择排序、并行全比较排序、串行全比较排序

    总的来说,理解和实现排序算法对于任何IT专业人员来说都是至关重要的,无论是在软件开发、系统设计还是硬件工程方面。通过C++和Verilog的结合,我们可以从软件和硬件角度全面地掌握排序的内在机制。

    常见经典排序算法(C语言)1希尔排序 二分插入法 直接插入法 带哨兵的直接排序法 冒泡排序 选择排序 快速排序 堆排序.docx

    常见的经典排序算法有希尔排序、二分插入法、直接插入法、带哨兵的直接排序法、冒泡排序、选择排序、快速排序、堆排序等。 一、希尔排序(Shell 排序法) 希尔排序法,又称宿小增量排序,是 1959 年由 D.L.Shell ...

    参考资料-【排序法考核工具】排序法岗位评价.zip

    在这个“参考资料-【排序法考核工具】排序法岗位评价.zip”压缩包中,重点讨论的是如何运用排序法来评估不同岗位的价值和相对重要性。 在岗位评价中,排序法通常用于确定组织内各个岗位的相对等级,以便于制定公平...

    电容电压排序算法.docx

    电容电压排序算法在柔性直流输电系统中的应用 电容电压排序算法是柔性直流输电系统中的核心技术之一,该算法能够实现在 MMC(Modular Multilevel Converter,模块化多电平换流器)结构中电容电压的优化排序。该算法...

    查找与排序算法的实现和应用

    在软件技术基础中,查找和排序算法是非常重要的概念,广泛应用于数据库、操作系统、网络通信等领域。因此,了解查找和排序算法的实现和应用是软件技术基础的关键。 查找和排序算法是计算机科学中的一种基本算法,...

    c#排序算法的动态演示系统

    "C#排序算法的动态演示系统"是一个教学工具,它以图形化方式展示了C#中常见的排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。通过动态模拟,用户可以直观地看到每一步操作,从而更好地...

    排序理论、算法及系统

    排序算法的效率直接关系到数据处理的速度和系统的性能。《排序理论、算法及系统》是Michael L. Pinedo所著作的一本关于排序问题的经典之作。在这本书中,作者详细探讨了多种排序问题,包括但不限于单机排序问题以及...

    包含五种算法排序系统

    这里我们重点关注一个名为“包含五种算法排序系统”的压缩包,这个包很可能包含了五种不同的排序算法实现。排序算法是计算机程序设计中的基础工具,它们用于将一组数据按照特定的顺序进行排列,如从小到大或从大到小...

    排序算法.pdf

    陕西科技大学学校的排序算法实验,最近小咲写的: 一、实验目的 1. 熟练运用冒泡排序、选择排序、插入排序、希尔排序、快速排序、合并排序、堆排序等七种常见的内排序算法 2. 使用不同的数据结合计算各种算法的运行...

    各种排序算法比较(java实现)

    在IT领域,排序算法是计算机科学中的基础但至关重要的部分,尤其在数据处理和数据分析中起着关键作用。本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并...

    算法桶式排序法桶式排序法

    桶式排序法桶式排序法桶式排序法桶式排序法

    操作系统 拓扑排序算法

    拓扑排序算法思想:a.在有向图中任选一个没有前趋的顶点输出;b.从图中删除该顶点和所有以它为尾的弧;c.重复上述a、b,直到全部顶点都已输出,此时,顶点输出序列即为一个拓朴有序序列;或者直到图中没有无前趋的...

Global site tag (gtag.js) - Google Analytics