java 轉換樹形結構程式碼
public Map<String,List<MenuOperate>> getMenuAndOperateAll(Map<String, Object> params) { // TODO Auto-generated method stub List<Map<String, Object>> getMenuAndOperateAllList=menuOperateMapper.getMenuAndOperateAll(params); Integer id = Integer.parseInt(String.valueOf(params.get("cid"))); Company company=companyMapper.selectByPrimaryKey(id); List<Map<String, Object>> list=new ArrayList<Map<String, Object>>(); if (company.getTemp3().equals("1")) { return getTreeDataForList(getMenuAndOperateAllList); }else{ for (Map<String, Object> map : getMenuAndOperateAllList) { if (!map.get("menuCode").equals("Red")) { list.add(map); } } } return getTreeDataForList(list); }
/** * 根據傳入的list資料, 轉換成樹結構 * @param olist 後臺獲取的許可權資料集合 * @return 返回map<String,List<menuOperate>> * 樣例:{"紅包管理":{"釋出紅包活動","暫停紅包活動",...},"":{},...} */ public Map<String,List<MenuOperate>> getTreeDataForList(List<Map<String, Object>> olist){ //校驗引數 if(olist==null || olist.size()<1){ return new HashMap<String,List<MenuOperate>>(); } //準備資料 Map<String,List<MenuOperate>> resultMap = new HashMap<String,List<MenuOperate>>(); //預設不建立例項 List<MenuOperate> resultList = null; //處理olist資料 for(Map<String, Object> map : olist){ //獲取父類名稱 作為結果集的主鍵 String key = String.valueOf(map.get("fatherName")); //預設不建立例項 MenuOperate mo = null; //校驗map中是否存在這個主鍵, 如果存在取出list, 在list中放入新的MenuOperate物件。 if(resultMap.containsKey(key)){ //取出list資料 resultList = resultMap.get(key); mo = new MenuOperate(); mo.setId(Integer.parseInt(String.valueOf(map.get("id")))); mo.setCode(String.valueOf(map.get("code"))); mo.setHasPemission(String.valueOf(map.get("hasPemission"))); mo.setMenuCode(String.valueOf(map.get("menuCode"))); mo.setName(String.valueOf(map.get("name"))); mo.setPid(Integer.parseInt(String.valueOf(map.get("pid")))); resultList.add(mo); resultMap.put(key, resultList); }else{ resultList = new ArrayList<MenuOperate>(); mo = new MenuOperate(); mo.setId(Integer.parseInt(String.valueOf(map.get("id")))); mo.setCode(String.valueOf(map.get("code"))); mo.setHasPemission(String.valueOf(map.get("hasPemission"))); mo.setMenuCode(String.valueOf(map.get("menuCode"))); mo.setName(String.valueOf(map.get("name"))); mo.setPid(Integer.parseInt(String.valueOf(map.get("pid")))); resultList.add(mo); resultMap.put(key, resultList); } } return resultMap; }