分享知识-快乐自己:N及分类(双重循环、递归)实现
实现多级分类:
1、双重 for 循环实现 N 及分类
/***
* 执行遍历
*
* @param menus
* 所有权限列表集合
* @param list
* 指定角色查询到的 权限Id
* @return
*/
@SuppressWarnings("unused")
private List<MenuFunction> menuFunction(List<MenuFunction> menus, List<Integer> list) {
// 中转集合
List<MenuFunction> functions = null;
try {
functions = new ArrayList<MenuFunction>();
// 循环遍历菜单层级关系
// 循环遍历
int a = 0;
int b = 0;
int c = 0;
for (MenuFunction item : menus) {
b = 0;
++c;
// 获取pid
long pid = item.getPid();
System.out.println("外层---循环》》》\t" + (++a) + "\t当前PID:" + pid);
if (list.contains(item.getId().intValue())) {
item.setChecked(true);//
}
if (pid == 0) {
// 遍历一级分类
functions.add(item);
} else {
System.out.println("******************************************");
for (MenuFunction innerCate : menus) {
++c;
/***
* 外层循环 pid 没有的等于0 的话 获取当前对象的 id 作为一级
*/
Long id = innerCate.getId();
System.out.println("内层---循环》》》\t" + (++b) + "\t当前ID:" + id);
if (id == pid) {
innerCate.getChildren().add(item);
break;
}
}
}
}
System.out.println("循环总记录数为:》》》\t" + c);
} catch (Exception e) {
LOGGER.error("循环遍历层级关系失败!!!" + e);
}
return functions;
}
/***
* 去掉空的权限
*
* @param list
* @return
*/
private List<MenuFunction> notNull(List<MenuFunction> list) {
List<MenuFunction> menusList = null;
try {
// 去掉空的权限
menusList = new ArrayList<MenuFunction>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getChildren().size() != 0) {
menusList.add(list.get(i));
notNull(list.get(i).getChildren());
}
}
} catch (Exception e) {
LOGGER.error("去除空的权限时意外出错!!!" + e);
}
return menusList;
}
2、递归实现

分享知识-快乐自己:N及分类(双重循环、递归)实现的更多相关文章
- repeater标签双重循环的使用
在网站开发中,.NET中的repeater标签几乎是笔者首选,也是唯一一个不会生成多余元素的标签,所有样式都是自定义的,这点类似 struts中的<s:iterator/>标签. 在日常编 ...
- java08双重循环打印图形
// 九九乘法表 外层循环每执行一次,内层循环执行一遍 for (int i = 1; i <= 9; i++) { // 外层控制的是行数 for (int j = 1; j <= i; ...
- java基础08 双重循环打印图形
public class Double01 { /** * 若有3个班级各4名学员参赛, * 如何计算每个班级参赛学员的平均分? */ public static void main(String[] ...
- Python基础—05-总结:双重循环,数据类型
总结 双重循环 冒泡排序 lt = [1, 5, 7, 3, 2, 4] # 计算元素的个数 n = len(lt) # 外层循环控制圈数 for i in range(n-1): for j in ...
- 分享知识-快乐自己:Java中的经典算法之冒泡排序(Bubble Sort)
原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...
- YTU 2690: 用双重循环实现小九九
2690: 用双重循环实现小九九 时间限制: 1 Sec 内存限制: 128 MB 提交: 848 解决: 573 题目描述 小九九是我们小时候常背的的乘法算术法则,现在用双重循环来实现小九九 1 ...
- 输出简单图形(StringBuilder代替双重循环)
在有些题目中打印简单图形必须使用StringBuilder或者StringBuffer,否则会运行超时(用String都会超时). 因为在题目的要求中说到输入的n是小于1000的,用双重循环就会超时, ...
- doT模板双重循环模板渲染方法
doT模板作为一个前端渲染模板,有着非常显著的有点.1.轻量.2.快捷.3.无依赖. 本文介绍一种几乎所有模板都会遇到的问题,双重循环渲染.我们知道在dot模板中循环渲染用的是{{~ it:value ...
- shell脚本———双重循环——九九乘法表
1.基础双重循环模板 2.break跳出单个循环 3.continue中止某次循环中的命令,但不会完全中止整个命令 4.九九乘法表
- Shell双重循环、图形排列及九九乘法表
Shell双重循环.图形排列及九九乘法表 目录 Shell双重循环.图形排列及九九乘法表 一.双重循环 1. 双重循环概述 2. 双重循环结构 二.循环特殊操作 1. exit 2. break 3. ...
随机推荐
- 【机器学习详解】SMO算法剖析(转载)
[机器学习详解]SMO算法剖析 转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754 CSDN−勿在浮沙筑高台 本文力 ...
- 《HBase in Action》 第二章节的学习总结 ---- HBase基本组成
准备工作:采用的HBase版本是:CDH4.5,其中的Hadoop版本是:hadoop-2.0.0-cdh4.5.0:HBase版本是:hbase-0.94.6-cdh4.5.0: Hbase的配置文 ...
- 【整理】Android中EditText中的InputType类型含义与如何定义( 转 )
转自:[整理]Android中EditText中的InputType类型含义与如何定义 用到的时候查到了这篇文章觉得很不错,就在此记录下. [背景] 经过一些Android中EditText方面的折腾 ...
- Nginx+tomcat集群中,session的共享
nginx,tomcat集群后多个session分配到同一个应用 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1).但随着用户量的增加 ...
- 登录shell与非登录shell读取文件过程
登录shell与非登录shell读取文件过程登录:/etc/profile→/etc/profile.d/*.sh ~/.bash_profile非登录:~/.bash_profile→ ...
- onkeydown
<input onkeydown="(function(){ )//或者其他 alert("enter") })(event)"/> $(this) ...
- Mysql 行数据转换为列数据
现有如下表: 需要统计手机所有售卖价格,显示为如下表: 需要使用group_concat对price进行处理,并且去重重复价格 sql如下: select type,group_concat(DIST ...
- K.Bro Sorting(思维题)
K.Bro Sorting Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)T ...
- JAVA面试题——JAVA编程题1(2015.07.22)
实现代码很简单: package com.xiaozan.shopping; import java.util.Arrays; public class ShoppingCart { ...
- WCF基础之会话、实例和并发
这篇笔记是一些概念性的东西. 会话,借用百科上的描述就是一个客户与服务器之间的不中断的请求响应序列.wcf的会话模式是通过服务契约的SessionModel进行设置的,其值为枚举,分别为:Allowe ...