`
y806839048
  • 浏览: 1127610 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

多维度条件情况处理

 
阅读更多

设计程序的时候,多维度条件情况处理

对于多维条件的限制时,可以先只考虑一个主要的条件,然后看怎么在这这条件中植入其他维度的条件

比如下面的代码是以根为一个重复单元(根及其紧下一层)(迭代维度)

   1,以最大根(100000)为开始迭代,每迭代一次处理一个根,进入下一个根(动态变化的根)

   2,处理每个根的时候,先处理直接在这个根下的页面(不可再作为根的),然后处理这个根下的文件夹(可再作为根的),此文件夹又当作根即开始迭代,一个根迭代一次

   3,有1,2就迭代可以,至于里面if else条件的完备可以处理所有级别的根,只要把所有级别的根遍历是的情况用 if else 全部罗列即可

但是,比以前做的多了一个比对,所以多了最外面的if else,以前是结合sql有层级的递归下去,这个是把无序的 用一个有序标准组织起来,在遍历标准的时候和需要排序的比对,排序,

标准遍历完,无序的就排完序)(排序维度)

 

  比如树状菜单:

  每层级有直接挂页面,有挂文件夹两种大情况,在文件夹又是这两种。

  private Tree getTree(MenuFolder paramMenuFolder, Set paramSet, int level)(

  {

    Tree localTree1 = null;

    if (paramSet.contains(paramMenuFolder))即页面直接挂的是最外层文件夹(根)的情况

    {

      localTree1 = new Tree(paramMenuFolder.getId(), 0, new MenuFolderDTO(paramMenuFolder), paramMenuFolder.getDisplayOrder());//本节点成一树(根文件夹建树)

      Object localObject1 = paramSet.iterator();

      while (((Iterator)localObject1).hasNext())//遍历已经和页面有关联的文件夹

      {

        Object localObject2 = (MenuFolder)((Iterator)localObject1).next();

        if (((MenuFolder)localObject2).equals(paramMenuFolder))//当是那个直接挂页面的一级文件夹

        {

          Object localObject3 = ((MenuFolder)localObject2).getMenuItems();//获取这根个文件夹下所有页面

          Object localObject4 = ((Set)localObject3).iterator();

          while (((Iterator)localObject4).hasNext())

          {

            Object localObject5 = (MenuItem)((Iterator)localObject4).next();

            MenuItemDTO localMenuItemDTO = new MenuItemDTO((MenuItem)localObject5);//遍历并组装页面

            if (localMenuItemDTO.getLevel1() >= level)

            {

              Tree localTree2 = new Tree(localMenuItemDTO.getId(), 1, localMenuItemDTO, localMenuItemDTO.getDisplayOrder());//页面建树

              localTree1.getSonList().add(localTree2);//这个页面放在本树的子节点

            }

          }

        }

      }//处理直接关在根文件夹的所有页面,建立页面树

    

      localObject1 = paramMenuFolder.getChildFolders();//获取此根级文件的一级文件夹,处理该一级文件夹下的所有二级文件夹

      if ((localObject1 != null) && (((Set)localObject1).size() > 0))

      {

        Object localObject2 = ((Set)localObject1).iterator();

        while (((Iterator)localObject2).hasNext())

        {

          Object localObject3 = (MenuFolder)((Iterator)localObject2).next();//

          Tree tree = getTree((MenuFolder)localObject3, paramSet, level);//遍历子一级文件夹建树///////开始迭代,到了文件夹才迭代

          if (tree != null) {

            localTree1.getSonList().add(tree);

          }

        }

      }

    }

    else//页面不直接挂在根文件夹上,隔了一层文件夹

    {

      Object localObject1 = new ArrayList();

      Object localObject2 = paramMenuFolder.getChildFolders();//获取该根文件夹的所有一级文件夹

      if ((localObject2 != null) && (((Set)localObject2).size() > 0))

      {

        Object localObject3 = ((Set)localObject2).iterator();

        while (((Iterator)localObject3).hasNext())

        {

          Object localObject4 = (MenuFolder)((Iterator)localObject3).next();//迭代这些一级文件夹

          Object localObject5 = getTree((MenuFolder)localObject4, paramSet, level);此时一级文件夹作为“根”,迭代()

          if (localObject5 != null) {

            ((List)localObject1).add(localObject5);

          }

        }

      }

      if (((List)localObject1).size() > 0)//有

      {

        localTree1 = new Tree(paramMenuFolder.getId(), 0, new MenuFolderDTO(paramMenuFolder), paramMenuFolder.getDisplayOrder());

        localTree1.setSonList((List)localObject1);属于不同的迭代次,和getSonList效果一致

      }

    }

    if (localTree1 != null) {

      Collections.sort(localTree1.getSonList());

    }

    return localTree1;

  }

分享到:
评论

相关推荐

    动态多维度查询

    标题“动态多维度查询”揭示了我们即将探讨的是一个与数据库查询相关的话题,特别是涉及到能够根据用户需求灵活改变查询条件的系统功能。这种功能在数据分析、报表生成或业务智能领域非常常见,它允许用户从不同角度...

    动态多维度查询——sql

    虽然具体内容无法在此提供,但可以推测该文章可能详细讲解了如何使用SQL进行动态多维度查询,可能包括了创建复杂的SQL查询语句,如JOINs、子查询、聚合函数以及使用CASE语句实现条件判断等内容。此外,可能还涉及到...

    Excel模板16-多维度动态图表.zip

    7. **VLOOKUP和INDEX/MATCH函数**: 在处理多维度数据时,这两个函数经常用于查找和返回相关数据。VLOOKUP适用于按列查找,而INDEX/MATCH组合则提供了更灵活的查找选项,包括按行查找和模糊匹配。 8. **数据模型...

    PSO_PSO多维度_多维PSO_PSO_

    标题"PSO_PSO多维度_多维PSO_PSO_"提及的是粒子群优化(PSO,Particle Swarm Optimization)算法在处理多维度问题的应用。描述指出,这里的具体问题是寻找一个10维空间中平方和函数的最小值。PSO是一种基于群体智能...

    基于模板实现的高效多维度Array类(含测试代码)

    在C++编程中,高效的多维度数组实现是一个重要的议题,特别是在处理大量数据和科学计算时。本主题将探讨一个基于模板实现的高效多维度Array类,该类旨在提供灵活、高性能的多维数组操作。 首先,让我们理解模板编程...

    Java对List多个排序、查询条件的处理

    在Java编程中,对List进行多个排序和查询条件的处理是一项常见的任务,特别是在处理数据集合时。本篇文章将深入探讨如何使用Java实现这些操作,并基于给出的`GroupFilterSortUtils.java`文件,我们可以推断这是一个...

    行业分类-设备装置-基于多维度分解迭代增强校正的图像复原方法.zip

    在图像处理领域,基于多维度分解迭代增强校正的图像复原方法是一种先进的技术,它在设备装置的应用中起着至关重要的作用。该方法旨在解决由于各种因素(如噪声、模糊、失真等)导致的图像质量下降问题,通过精细化的...

    维度建模基本规则

    为了避免事实表过于臃肿,应将用于报告的标签和过滤条件存储在维度表中。这有助于保持事实表的纯净,专注于存储数值型事实数据。 ### 规则8:维度表使用代理键 除日期维度外,其他维度表应使用代理键作为主键,这...

    京东订单多维度调度系统PRD1.0.docx

    京东订单多维度调度系统是一款专为电子商务平台设计的高效、智能的订单处理工具,旨在提升订单处理效率,优化资源分配,确保订单流程的顺畅与精确。以下是对该系统的详细解析: 1. **项目概述** - **项目背景**:...

    京东订单多维度调度系统PRD1.0

    京东订单多维度调度系统PRD1.0是针对京东电商平台日益复杂的订单处理需求而设计的一套高效、灵活的订单调度解决方案。随着京东业务的迅速扩展,传统的订单处理方式已无法满足海量订单的实时、精准分配与处理。因此,...

    京东订单多维度调度系统PRD1.0的副本.docx

    京东订单多维度调度系统是一款专为电子商务平台设计的高级订单管理系统,旨在提升订单处理效率,优化资源分配,确保服务质量,并实现精细化运营。该系统通过多种维度进行订单调度,以适应复杂的业务场景和用户需求。...

    php多条件组合筛选,搞定多条件组合筛选

    在PHP开发中,多条件组合筛选是常见的功能需求,尤其在数据量较大的Web应用中,用户往往需要通过多个维度来筛选和查找所需信息。本文将详细介绍如何使用PHP实现多条件组合筛选,并结合JavaScript(JS)处理URL动态...

    pytorch改变tensor维度 - Python-PyTorch reshape Tensor维度

    `unsqueeze()`和`view()`/`reshape()`经常用于处理神经网络输入,而`resize_()`更多地用于调整内部张量的大小。在处理数据时,理解这些方法的差异和用途至关重要,因为它们可以显著影响代码的效率和内存使用。 在...

    电信设备-头枕杆涂油嘴多维度移动机构.zip

    在实际应用中,【电信设备-头枕杆涂油嘴多维度移动机构】技术被广泛应用于不同类型的电信设备中,尤其是那些结构复杂、运行条件苛刻的设备。通过不断优化润滑系统和运动控制,电信设备可以达到更高的性能标准,从而...

    高中思想政治课评课维度探究.doc

    在多维度的评课理论框架中,四维评课理论和三维理论等,为评价高中思想政治课提供了全面的视角。四维评课理论强调“温度、广度、深度、适度与高度”的综合考量,这不仅关注学科知识的传授,更强调课堂文化的构建和...

    【数据分析高级版】2016多维度指标分析单品.zip

    9. **Excel高级功能应用**:xlsm文件可能利用了Excel的高级功能,如PivotTable(透视表)、Data Validation(数据验证)、VLOOKUP和HLOOKUP(查找函数)、IF和 nested IF(条件判断)等,提升数据处理效率。...

    仿京东的多条件筛选的实现(php)

    综上所述,仿京东的多条件筛选功能在PHP中的实现涉及到前端交互设计、参数传递、后端逻辑处理、数据库操作等多个环节。每个环节都需要细致考虑,以确保功能的稳定性和用户体验。通过对这些知识点的掌握,可以为用户...

    matlab开发-多维度支持的mtimesxfastmatrixmultiplywith多维支持

    多维度支持意味着`mtimesx`不仅仅局限于二维矩阵的乘法,它还能够处理多维数组,如三维或更高维的张量乘法。在处理图像、信号处理、机器学习等领域时,多维数据的操作非常常见,因此这种扩展能力具有很高的实用价值...

Global site tag (gtag.js) - Google Analytics