迭代的多方面使用

本人java小白一个,最近学了迭代,故记之。

  迭代故名思意,就是无限的循环,它跟for循环也是很相关的。在这里,我总结下,什么事迭代,迭代就是,无限循环自己,然后一个推出的条件。

在这里,就用一个例子来说明。

 现在有一张单位表,在这张单位表里面有一些,按层级显示的数据。

如:

数据库方面:


实体方面:


/**
* 子集
* @return
*/
private List<organization> children = new ArrayList<organization>();

增加一个这个单位下面的二级菜单,list




怎么层级显示呢?

1.先查询父节点为Null的所有顶级list,for循环这个List,并且传入循环出的单个元素,去调用迭代方法查询它的下一级


/**
* 查询所有

*/

public List<organization> findAllOrganization() {
List<organization> orgList = this.selectAllFunction();//这个方法就是查询父节点为null
for (organization ora : orgList) {
               diedai_organization(ora);//for循环这个list,给它添加子节点
}


return orgList;
}



2.,根据传入的元素,获取其id,下一级的父节点就是这个传来的id,是否相等,查询出一个List,
并且 for循环此list,然后将此list里面的元素添加到当前传入的元素的id,并且其子节点添加for循环而出的单级元素。到这里
可以循环出两个等级,但是,无限还是达不到,要想达到无限,给这个单元素在进行一次跌代。就可以达成了。

/**
* 迭代所有
* 无限循环
*/
private void diedai_organization(organization o){

//这是无限迭代的退出条件
if( o == null ){
return;
}

List<organization> temp = this.selectwaijia(o.getOrid());//这个方法就是根据传来的主键去跟所有节点的父节点去匹配

for(organization organizations : temp ){
o.getChildren().add(organizations);//这个只是二级,达不到无限,所以,下面才是关键
diedai_organization(organizations);//这样就可以达到无限了啊直到为null,停止运行
}

}


3.前台页面处理

新建两个jsp页面,一个是显示单位页面,一个是迭代循环页面

<c:if test="${fn:length(list) == 0}">
                    <tr>
                    <td colspan="6">
                    没有查询到相关数据
                    </td>
                    </tr>
                    </c:if>
  <c:import url="../organizationModel/diedai_organization.jsp"></c:import>

在这里,我是使用导入的方式来进行二次的查询

  <body>


 <c:forEach var="cur" items="${list}" varStatus="vs">  
<tr>  
       <td align="left">
        <c:forEach begin="0" end="${level}" step="1">
        &nbsp;&nbsp;&nbsp;&nbsp;  //
        </c:forEach>
        ${cur.orName}
       </td>
  
        </tr>  
 <c:if test="${fn:length(cur.children) > 0}"><!-- 如果有childen -->  
     <c:set var="level" value="${level + 1}" scope="request" /><!-- 循环一次子列表,level+1 -->  
     <c:set var="list" value="${cur.children}" scope="request" /><!-- 注意此处,子列表覆盖treeList,在request作用域 -->  
    <c:import url="../organizationModel/diedai_organization.jsp"></c:import><!-- 再次调用 -->  
 </c:if> 


 </c:forEach>

    <c:set var="level" value="${level - 1}" scope="request" /><!-- 退出时,level-1 -->  

  </body>


这是效果图:


这就是迭代单位,层级显示。这是个评论的平台,如果有不足之处,欢迎斧正

猜你喜欢

转载自blog.csdn.net/qq_32363305/article/details/53418654