欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java遞歸菜單樹轉(zhuǎn)換成pojo對象

 更新時(shí)間:2013年08月09日 15:17:44   作者:  
這篇文章介紹了java遞歸菜單樹轉(zhuǎn)換成pojo對象的具體實(shí)現(xiàn),有需要的朋友可以參考一下
復(fù)制代碼 代碼如下:

  package com.cjonline.foundation.authority.pojo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import com.cjonline.foundation.util.CheckNullEmpty;
/**
 * 實(shí)現(xiàn)遞歸的幫助類,最終的結(jié)果可以描述成如下:
 * 根(root)
 * --1(子系統(tǒng)1)
 * -----1.1
 * -------1.1.1
 * -------1.1.2
 * ------- ....
 * -----1.2
 * --2(子系統(tǒng)2)
 * -----2.1
 * -------2.1.1
 * -------2.1.2
 * ------- ....
 * -----2.2
 */
public class ModelList implements java.io.Serializable {
    private static final Logger logger = Logger.getLogger(ModelList.class);
    private static final long serialVersionUID = 6384598893693849820L;
    /**
     * model代表當(dāng)前模塊
     */
    private SysModel model;
    /**
     * models代表當(dāng)前模塊下面的子模塊,
     */
    private List<ModelList> subList = new ArrayList<ModelList>();
    /**
     * 菜單級別
     */
    private int flag = 0;
    public SysModel getModel() {
        return model;
    }
    public void setModel(SysModel model) {
        this.model = model;
    }
    public List<ModelList> getSubList() {
        return subList;
    }
    public void setSubList(List<ModelList> subList) {
        this.subList = subList;
    }
    public void setFlag(int flag) {
        this.flag = flag;
    }
    public int getFlag() {
        return flag;
    }
    /**
     * 遞歸方法根據(jù)傳入的模塊集合形成層級菜單
     */
    @SuppressWarnings("unchecked")
    public ModelList createTree2(List<SysModel> ms) {
        //
        ModelList node = new ModelList();
        ArrayList<SysModel> fu = new ArrayList<SysModel>();// 用來存儲parentId為空的父節(jié)點(diǎn);
        ArrayList<SysModel> childs = new ArrayList<SysModel>();// 用來存儲不是系統(tǒng)的模塊
        // 將系統(tǒng)和模塊菜單分開
        for (Iterator<SysModel> it = ms.iterator(); it.hasNext();) {
            SysModel mode = (SysModel) it.next();
            String parentId = mode.getParentId();
            if (parentId == null || parentId.equals("")) {
                fu.add(mode);
            } else {
                childs.add(mode);
            }
        }
        //由于是多個(gè)子系統(tǒng),首先要找出有多少個(gè)子系統(tǒng)
        for (SysModel model : fu) {
            ModelList node1 = new ModelList();
            node1.setFlag(0);
            node1.setModel(model);
            node.subList.add(node1);
            appendChild(node1, childs);
        }
        return node;
    }
    /**
     * node節(jié)點(diǎn) childs為所以系統(tǒng)下的子節(jié)點(diǎn)
     */
    public void appendChild(ModelList node, List<SysModel> childs) {
        if (node != null) {
            String systemId = node.getModel().getSystemId();
            String smid = node.getModel().getSysModuleId();
            int flag = node.getFlag();
            if (childs != null && childs.size() > 0) {
                for (SysModel model : childs) {
                    String systemId2 = model.getSystemId();
                    String parentId2 = model.getParentId();
                    if (systemId.equals(systemId2)) {
                        if (parentId2.equals(smid)) {
                            ModelList child = new ModelList();
                            child.setModel(model);
                            child.setFlag(flag + 1);
                            node.getSubList().add(child);
                            appendChild(child, childs);
                        }
                    }
                }
            }
        }
    }
}
 

相關(guān)文章

  • 詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

    詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

    Spring Boot項(xiàng)目中常有一些相對穩(wěn)定的參數(shù)設(shè)置項(xiàng),其作用范圍是系統(tǒng)級的或模塊級的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進(jìn)行配置,從而提高變動和擴(kuò)展的靈活性,保持代碼的穩(wěn)定性
    2021-06-06
  • Java MyBatis框架環(huán)境搭建詳解

    Java MyBatis框架環(huán)境搭建詳解

    MyBatis本是apache的一個(gè)開源項(xiàng)目iBatis,MyBatis環(huán)境的搭建有點(diǎn)麻煩,本章帶你了解搭建過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
    2022-08-08
  • Java實(shí)現(xiàn)斗地主最簡代碼實(shí)例

    Java實(shí)現(xiàn)斗地主最簡代碼實(shí)例

    在本篇文章里小編給各位分享的是關(guān)于Java實(shí)現(xiàn)斗地主最簡代碼實(shí)例,有興趣的朋友們可以參考下。
    2020-05-05
  • SpringBoot 中常用注解及各種注解作用

    SpringBoot 中常用注解及各種注解作用

    本篇文章將介紹幾種SpringBoot 中常用注解及各個(gè)注解的作用,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-03-03
  • Java中如何動態(tài)創(chuàng)建接口的實(shí)現(xiàn)方法

    Java中如何動態(tài)創(chuàng)建接口的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java中如何動態(tài)創(chuàng)建接口的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • 任何Bean通過實(shí)現(xiàn)ProxyableBeanAccessor接口即可獲得動態(tài)靈活的獲取代理對象或原生對象的能力(最新推薦)

    任何Bean通過實(shí)現(xiàn)ProxyableBeanAccessor接口即可獲得動態(tài)靈活的獲取代理對象或原生對象的能力(最新推

    這篇文章主要介紹了任何Bean通過實(shí)現(xiàn)ProxyableBeanAccessor接口即可獲得動態(tài)靈活的獲取代理對象或原生對象的能力,通過示例代碼看到,借助ProxyableBeanAccessor接口默認(rèn)實(shí)現(xiàn)的getReal、getProxy、selfAs方法,很靈活的按需獲取代理或非代理對象,需要的朋友可以參考下
    2024-02-02
  • 使用Spring由構(gòu)造方法自動裝配

    使用Spring由構(gòu)造方法自動裝配

    這篇文章主要介紹了使用Spring由構(gòu)造方法自動裝配,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot啟動執(zhí)行sql腳本的3種方法實(shí)例

    SpringBoot啟動執(zhí)行sql腳本的3種方法實(shí)例

    在應(yīng)用程序啟動后,可以自動執(zhí)行建庫、建表等SQL腳本,下面這篇文章主要給大家介紹了關(guān)于SpringBoot啟動執(zhí)行sql腳本的3種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Mybatis-Spring源碼分析圖解

    Mybatis-Spring源碼分析圖解

    這篇文章主要介紹了Mybatis-Spring源碼分析,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • java實(shí)現(xiàn)簡易點(diǎn)菜器

    java實(shí)現(xiàn)簡易點(diǎn)菜器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡易點(diǎn)菜器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論