真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

用JAVA寫無限級樹形菜單代碼

這篇文章主要介紹“用JAVA寫無限級樹形菜單代碼 ”,在日常操作中,相信很多人在用JAVA寫無限級樹形菜單代碼 問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”用JAVA寫無限級樹形菜單代碼 ”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)公司網(wǎng)站建設服務商,為中小企業(yè)提供成都網(wǎng)站設計、網(wǎng)站制作服務,網(wǎng)站設計,網(wǎng)站托管維護等一站式綜合服務型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)公司

由于工作中經(jīng)常碰見樹形結(jié)構所寫的一個公用方法,雖然之前有過無限級的代碼不過都限制于對象,對象不同或?qū)ο笾凶侄尾煌紵o法使用。

此方法可以接受任意類型的List集合,返回時是已經(jīng)拼接好了所有子集的List集合。注意方法接收的List合返回的List是同一個對象。

此方法采用的是Map形式實現(xiàn),所以在參數(shù)方面需要提供字段名,這樣就可以避免父級和自己字段不同從而多寫很多重復的代碼。另外子集的名稱是可以自定義的。如果名字和我重構方法中相同可以用重構方法(其實這個沒啥用就是可能方便一點)

自己寫的大佬勿噴,如果有更好的方式可以評論,感謝大家!

private static List> all;

/**
 *
 * @param list 任何類型的list集合
 * @param id 本層的id的字段名
 * @param parentId 上一層Id的字段名
 * @param childrenListName 對象中子集的名
 * @param firstId 最高層的父級Id
 * @return 返回任意類型List
 * @throws Exception 轉(zhuǎn)換異常
 */
public static List toJson(List list, String id, String parentId, String childrenListName,Integer firstId) throws Exception {
    List> mapList = new ArrayList<>();
    for(Object o : list){
        Map map = ObjectToMapUtils.objectToMap(o);
        mapList.add(map);
    }
    all = new ArrayList<>(mapList);
    List> root = new ArrayList<>();
    for(Map map : mapList){
        if(Integer.parseInt(map.get(parentId).toString()) == firstId){
            root.add(map);
        }
    }
    all.removeAll(root);

    for(Map map : root){
        map.put(childrenListName,getChildren(map,id,parentId,childrenListName));
    }
    Gson gson = new Gson();
    List lists = gson.fromJson(JSONObject.toJSONString(root),list.getClass());
    return lists;
}
public static List toJson(List list) throws Exception{
    return toJson(list,"id","parentId","list",-1);
}
public static List toJson(List list,String id) throws Exception{
    return toJson(list,id,"parentId","list",-1);
}
public static List toJson(List list,String id,String parentId) throws Exception{
    return toJson(list,id,parentId,"list",-1);
}
public static List toJson(List list,String id,String parentId,String childrenListName) throws Exception{
    return toJson(list,id,parentId,childrenListName,-1);
}

public static List> getChildren(Map parent,String id,String parentId,String childrenListName){
    List> mapList;
    if(parent.containsKey(childrenListName) && parent.get(childrenListName) != null){
        mapList = (List>) parent.get(childrenListName);
    }else{
        mapList = new ArrayList<>();
    }
    for(Map map : all){
        if(Integer.parseInt(parent.get(id).toString()) == Integer.parseInt(map.get(parentId).toString())){
            mapList.add(map);
        }
    }

    if(mapList != null){
        all.removeAll(mapList);
        for(Map map : mapList){ 
            map.put(childrenListName,getChildren(map,id,parentId,childrenListName)); 
        }
    }
    return mapList;
}

public static void main(String[] arg){
    List list = new ArrayList<>();
    try{
        TreeUtils.toJson(list,"id","parentId","list",0);
    }catch (Exception e){

    }
}

到此,關于“用JAVA寫無限級樹形菜單代碼 ”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享題目:用JAVA寫無限級樹形菜單代碼
鏈接分享:http://weahome.cn/article/giojgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部